home *** CD-ROM | disk | FTP | other *** search
/ MaxiMac 2001 July / MaxiMac 116.iso / Macworld on CD n°116 / Mac OS X / Internet / Utilisation / thoth-1.2.1 / Thoth Help / 4) User Guide < prev   
Encoding:
Text File  |  2001-05-07  |  128.1 KB  |  1,059 lines  |  [TEXT/THTH]

  1. Thoth User Guide
  2.  
  3.    
  4.  
  5. Table of Contents
  6.  
  7. Part One: Introduction and Overview 
  8.     What should I read?
  9.     What is Thoth?
  10.     What's in this distribution?
  11.     Program Information for Thoth
  12.     Problems?
  13.     Carbon and OS X Bugs
  14.     Other Compatibility Issues
  15.     Using Multiple News Server Connections
  16.     Unresponsive News Server Connections
  17. Part Two: Files and Folders 
  18.     The Files
  19.     Folders and File Locations
  20. Part Three: News Servers and Subscribed Group Lists 
  21.     Are you just getting started with Thoth?
  22.     Configuring a new News Server
  23.     Subscribing to Newsgroups
  24.     Subscribed Group List Windows
  25. Part Four: Filtering 
  26.     How Filters Work
  27.     Preferences
  28.     Creating and Editing Filters
  29.     Sundry Notes
  30.     Live Filtering
  31. Part Five: Article List Windows, and Sorting and Threading 
  32.     Introduction
  33.     Preferences
  34. Part Six: Messages and Personalities 
  35.     Introduction
  36.     Switching Between Personalities
  37.     Creating and Editing Personalities
  38.     Preferences
  39. Part Seven: Newsgroup Settings 
  40.     Introduction
  41. Part Eight: Character Sets 
  42.     Introduction
  43.     Translator files
  44.     Preferences
  45.     Table File Format
  46.     Writing a Translator Plugin
  47.     Thank you!
  48. Part Nine: Queued Downloading and Sending 
  49.     Introduction
  50.     Preferences
  51.     Operation
  52. Part Ten: Binary Decoding and Image Display 
  53.     Preferences
  54.     Comments on Base64 Decoding
  55.     Setting the Type and Creator of Decoded Files
  56.     Comments on Uudecoding
  57.     Split Binary Attachments
  58.     Image Options
  59. Part Eleven: Binary Posting 
  60.     Introduction
  61.     Preferences
  62. Part Twelve: Keeping Articles and Reading News Offline 
  63.     Introduction
  64.     Marking Articles Kept and Unkept
  65.     Offline Newsreading
  66.     Cache Maintenance
  67. Part Thirteen: The Status Window 
  68.     Introduction
  69.     Preferences
  70. Part Fourteen: Shortcuts 
  71.     Introduction
  72.     Keypad Shortcuts
  73.     Main Keyboard Shortcuts
  74.     Modified Menu Commands
  75. Part Fifteen: Scripting 
  76.     Thoth Suite
  77.  
  78.  Part One: Introduction and Overview
  79.  
  80. What should I read?
  81.  
  82. Please read all of this document thoroughly before trying to run Thoth for the first time.
  83.  
  84. What is Thoth?
  85.  
  86. Thoth is a Usenet newsreader application for Macintosh. Its features include automatic viewing of downloaded images, binary posting, flexible article filtering (kill files) and sorting, reference-based threading, and comprehensive multiple character set support for reading and posting in non-English language and non-Latin alphabet newsgroups. It can be used both as an online and offline newsreader. Multiple news servers can be used simultaneously.
  87.  
  88. What's in this distribution?
  89.  
  90. • Thoth: a Carbon newsreader application that can run under OS 8.5 and later, including OS X.
  91. • Documentation for Thoth.
  92. • Translator files that allow Thoth to display and post messages in various non-Roman languages.
  93.  
  94. Program Information for Thoth
  95.  
  96. Thoth is shareware. If you wish to redistribute the program, you must obtain the prior written permission of Brian Clark, and you must distribute the complete Thoth archive containing the application and all other files.
  97.  
  98. If Thoth has not been registered then some program features may only work a limited number of times before they disabled. Saved group lists will not remember which posts have been read once the trial period has ended. Only 20 queued transfers per session will be allowed if Thoth has not been registered. The kept article features that permits saving interesting articles and offline newsreading are disabled once the trial period has ended. Binary posting is also disabled once the trial period has ended and only one post per session is allowed prior to that. Thoth will also display a nag alert when starting up and quitting if it has not been registered. After you register by using the “Register Thoth” application to pay for Thoth using the Kagi payment service, you will receive by email the registration key needed to unlock all of Thoth's features and functionality.
  99.  
  100. Thoth requires at least 4.5 Mb of free RAM, and either CarbonLib 1.0.4 and System 8.5 or later or Mac OS X (10.0 final). Mac OS 9.1 shipped with CarbonLib 1.1.1 which has a number of bugs including one that causes slow typing. Mac OS 9.1 users should upgrade to CarbonLib 1.2 or later.
  101.  
  102. Thoth was written by Brian Clark:
  103.  
  104. <mailto:baclark@kagi.com>
  105.  
  106. The home site for Thoth is:
  107.  
  108. <http://www.thothsw.com>
  109.  
  110. The following people have in one way or another helped in the development, testing, and support of Thoth. Many thanks to: Terje Bless, Stefan Borth, Deborah Goldsmith, Russ Harlan, Jim Luther, David McIntosh, J. B. Moreno, Willem Nijenhuis, Andreas Prilop, Paul Ripley, Drew D. Saur, Andrew Starr, Martin Nadeau, and Daniel E. White. Many thanks also to John Norstad for his NewsWatcher program that showed how a Macintosh newsreader should look and behave.
  111.  
  112. The regular expression code is a slightly modified version of code by Henry Spencer. The plugin interface for the extended character set conversion was designed and written by Dan Crevier, and additional support code for non-Roman language support was written by Mizutori Tetsuya and Xiaolin Zhao. Text editing code using the WASTE text engine is based on code by Marco Piovanelli and Dan Crevier. “Natural Order” string sorting is based on code by Stuart Cheshire. The X-Face decoding code was originally written by James Ashton. JPEG decoding is based in part on the work of the Independent JPEG Group. Some utility code is based on code written by John Norstad and published by Northwestern University.
  113.  
  114. THE AUTHOR PROVIDES THOTH AS IS, WITHOUT ANY WARRANTY OR PROMISE OF TECHNICAL SUPPORT. THE AUTHOR DISCLAIMS ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THOTH, INCLUDING, WITHOUT LIMITATION, INCIDENTAL, CONSEQUENTIAL, INDIRECT OR SPECIAL DAMAGES OF ANY KIND, EVEN IF THE AUTHOR IS AWARE OF THE POSSIBILITY OF SUCH DAMAGES. THE AUTHOR MAKES NO WARRANTIES, EXPRESS OR IMPLIED, WITH RESPECT TO THE PROGRAM, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 
  115.  
  116. Copyright © 2000-2001 Brian Clark.
  117. Portions Copyright © 1996 Dan Crevier.
  118. Portions Copyright © 1986 by University of Toronto.
  119. Portions Copyright © 1996 by Stuart Cheshire.
  120. Portions Copyright © 1995 by Carnegie Mellon University.
  121. Portions Copyright © 1994-1995 by Christopher J. Newman.
  122. Portions Copyright © 1995-1997 by John Montbriand.
  123. Portions Copyright © 1990 by James Ashton.
  124. WASTE text engine © 1993-1998 by Marco Piovanelli.
  125. Portions Copyright © 1994-1998 Northwestern University.
  126.  
  127. Problems?
  128.  
  129. Make sure you've read the “!!READ ME FIRST!!” document that accompanied the Thoth distribution. It contains important information that you must know and directions you must follow.
  130.  
  131. If you are using a news server that requires authentication (as most independent commercial news servers do), you need to enter your username and password and check the “Authenticate When Connecting” option before you can connect to the news server. All this is done in the “Authentication” pane of the ”News Server Settings” dialog.
  132.  
  133. Thoth is a stable and reliable program. If you encounter problems, here are some things to try/look out for:
  134.  
  135. • Make sure you have your location and time zone specified correctly in the Date & Time control panels. Setting your location is important for the correct operation of the various date handling routines.
  136. • If fetching headers for a large number of articles at once seems to take a very long time or causes out of memory errors, try fetching a more reasonable number such as 600-2000.
  137. • Make sure you're using the most recent version of Open Transport, and have installed all the appropriate system software updates.
  138. • Try running with the minimum number of system extensions to see if this eliminated the problem.
  139. • Only as a last resort, trash your old preferences and/or filter files, and see if that makes any difference. Make sure you keep a copy of these files so they can be restored if necessary.
  140.  
  141. Carbon and OS X Bugs
  142.  
  143. Unfortunately both CarbonLib for OS 8 and 9 and OS X tend to be buggy and do not fully and correctly implement all the features that they should. As much as possible Thoth tries to work around these bugs. But some bugs may cause improper behavior.
  144.  
  145. OS X has all kinds of compatibility problems and quirks and bugs. This may explain why some features don't work properly in Thoth. Other problems may arise if you have OS X installed on a UFS (Unix File System) volume or have your news or other files saved there, owing to apparent bugs in OS X's support for UFS volumes and standard Mac file operations. It's probably best to keep the “Thoth Preferences” and the Thoth news files on an Extended HFS volume. If you have a UFS OS X system disk, you can use the procedure explained in the “Files and Folders” section of the user guide to move the “Thoth Preferences” folder to a different (Extended HFS  format) disk.
  146.  
  147. There's at least one non-Apple modification to the standard Aqua appearance (modifying the Extras.rscr file) that causes all kinds of havoc and misbehavior such as items in windows and dialogs being drawn incorrectly or not at all and controls not working as they should. Beware of all such modifications, as they can create bugs that make it impossible to configure and use Thoth and other programs.
  148.  
  149. Other Compatibility Issues
  150.  
  151. When running under OS 8 and 9 the usual extension conflicts can cause problems in Thoth. Some of these conflicts may only occur in Carbon applications like Thoth. Others may only occur in programs that take advantage of features that were added in OS 8.5 and later.
  152.  
  153. One example is Kaleidoscope . Versions prior to 2.1.2 include numerous bugs that affect Thoth. These cause flickering in the status window and a severe overall slowdown of the system, problems scrolling through long group lists or article windows, and general cosmetic problems.
  154.  
  155. Some file dialog enhancing extensions like ACTION Files or Default Folder can be configured to disable Navigation Services file dialogs in programs. If this feature is enabled for Thoth, the program will refuse to start with an alert stating that Navigation Services is not installed. The solution is to configure the extension to not disable Navigation Services in Thoth.
  156.  
  157. The “flash icon in menu bar” option in Remote Access can cause crashes in many programs. It should be disabled. FinderPop 1.9.2 makes it impossible to select the About item in the Apple menu when using CarbonLib 1.1 and later and FinderPop's hierarchical Apple menu feature is enabled. Using OSA Menu 1.2.2 and CarbonLib 1.1 and later causes program slowdowns and menu flickering. Other extensions that do similar things may also cause problems.
  158.  
  159. Using Multiple News Server Connections
  160.  
  161. Thoth has the ability to use multiple connections to a single news server so that several newsreading tasks can be performed simultaneously. By default the program reserves one news server connection to open articles for reading, check for new posts in a group list, and perform a few other tasks in an interactive manner. A second connection is used to open article list windows and also download articles and send new messages in a queued manner.
  162.  
  163. Not all news servers allow multiple simultaneous connections. More and more independent commercial news servers either limit users to a few connections, or charge extra for additional connections. That's because each connection can impose a significant load on a news server, and it's very costly to build and maintain a news server that can deal with the enormous number of posts received everyday and the demands of users browsing and reading those posts. 
  164.  
  165. There are two factors that affect the speed of newsreading: the speed of the news server (which usually affects the delay in starting to return header information or in finding how many new posts are in a newsgroup) and the available bandwidth of the user's connection to the news server (which usually determines the rate at which articles or other information is downloaded to the user's system).
  166.  
  167. Any newsreader that tries to speed up newsreading by using multiple connections to a news server must understand these two factors in order to effectively deal with the problem. Failure to do so may well make matters worse, by slowing down the responsiveness of the user's system and overburdening the news server so that everybody suffers poor performance. The way that Thoth uses multiple server connections is designed to deal with these realities.
  168.  
  169. It's obvious that if a given task is slowed by the available bandwidth, then trying to perform several such tasks in parallel will only slow down them all so that none are completed quickly. This is why Thoth normally uses just a single extra connection to perform queued background downloading and sending. That way each individual download occurs as fast as possible, and the user receives and can use each download much sooner than if several of them were all competing for the available bandwidth. Similar logic holds for opening article list windows in a serial manner rather than trying to use many news server connections to open them all in parallel. The queued method doesn't bog down the news server with excessive connections that only slow everyone down. Instead the available news server resources and bandwidth are used in a responsible and efficient manner.
  170.  
  171. In situations where individual news server connections are bandwidth limited to less than the user's available bandwidth, it may be useful to use additional connections to the news server when downloading or posting. Thoth allows up to four queued transfer news server connections to be enabled or disabled via buttons in the “Queued Transfers List” window. An appropriate number of server connections to be used must also be set: See “Part Nine: Queued Downloading and Sending.” 
  172.  
  173. Unresponsive News Server Connections
  174.  
  175. Sometimes the news server may appear to be unresponsive. Many things can cause this. The news server could just be slow or overburdened. There may be a problem with your network connection, or with routing to or from the news server. To better deal with problems like this Thoth lets you set a timeout value that determines how long to wait before giving up on an operation that has stalled. This timeout value is set in the News Server” pane of the ”News Server Settings” dialog. Entering a value of zero disables checking for unresponsive connections. A value of greater than zero is used to tell the program how long to wait before declaring an unresponsive connection dead. This should not be set to too low a value or very poor performance will result from cancelling connections that aren't really stalled. A value of 300 seconds is appropriate in most cases.
  176.  
  177. Another situation to consider is when there is an unresponsive server connection and the computer has been configured to sleep after a period of inactivity. It's possible for problems to occur if the machine goes to sleep while Thoth is in the middle of a network operation. To be safe, it's best to set the sleep idle time to be longer by about a minute than the unresponsive server timeout value, and should not be less than 5 minutes. This will allow the program to halt any ongoing network operations before the machine goes to sleep.
  178.  
  179.  Part Two: Files and Folders
  180.  
  181. Thoth uses a number of different file types and special folders to do its work. This section describes these files and folders.
  182.  
  183. The Files
  184.  
  185. 
  186.  
  187. The screenshot above shows eight of the files used by Thoth.
  188.  
  189. In the top row, the leftmost is the application itself. To its right is the preferences file. This file stores all the settings entered in the “Preferences” dialog, plus all your filters and newsgroup settings, and various other settings such as saved dialog positions. The rightmost file is a news file. It stores all the information specific to a particular news server: the list of all available newsgroups, your subscribed group lists, and other settings for the server such as the number of connections to use and authentication information.
  190.  
  191. The second row shows some additional Thoth files. The leftmost is a personality file: a message file that has been saved as a stationary pad. The center file is specific to each news server and contains the list of pending queued downloads and messages to be sent. The rightmost file is also news server specific, and is one of 3 files used by Thoth to cache information about posts.
  192.  
  193. The bottom row shows files that can optionally be used with Thoth to permits reading and posting articles in languages that require special transliteration. The leftmost file is a translator plugin, while the file on the right is a charset table file. See “Part Eight: Character Sets”  for more information on these files.
  194.  
  195. Folders and File Locations
  196.  
  197. This section briefly explains how Thoth looks for the files it needs and expects to find.
  198.  
  199. One special folder is the one that holds the Thoth program. That folder should use the following arrangement:
  200.  
  201. 
  202.  
  203. In addition to the program, it contains two special folders. One is the “Thoth Help” folder that contains program help files. Any text files placed in this folder will be added to the program's Help menu. At a minimum it should contain the four files shown above.
  204.  
  205. The other special folder is the “Thoth Translators” folder. This folder is used to hold the character set translation plugin and table files used to adapt the program to reading and posting on non-English newsgroups.
  206.  
  207. Thoth creates a special “Thoth Preferences” folder in the Preferences folder. It looks like this:
  208.  
  209. 
  210.  
  211. If you wish to have the program preferences stored elsewhere, you may move the folder to another location (when Thoth is not running), and place an alias to the moved folder in the Preferences folder. The alias file must have the name “Thoth Preferences.” In the rare circumstance that you wish to use multiple Thoth preferences without using the multiple user features of OS 9 or OS X, you can also copy or move the preferences folder to a different location on your hard disk. Then to use a particular set of preferences, launch Thoth by double-clicking on the “Thoth Prefs” file in the moved or copied “Thoth Preferences” folder. Launching Thoth by double-clicking the application or any Thoth document other than a preferences file will always use the default preferences stored in the standard Preferences folder (or referenced by an alias in the standard Preferences folder), creating this folder if necessary. Launching Thoth by double-clicking a preferences file will always use that set of preferences. The preference file must always be named “Thoth Prefs” for correct program operation.
  212.  
  213. The folder named “Thoth Servers” contains aliases to the news files that have been opened. When you open a news file Thoth automatically places and alias to that file in this folder, and removes any aliases that point to news files that can no longer be found. The news files listed in the folder are added to the “Open Server” command in Thoth, making it easy to open news servers. Thoth manages this folder for you by automatically. You should only need to visit the folder yourself if you want to delete a no longer wanted news file alias.
  214.  
  215. The “Thoth Signatures” folder is used to hold text files that can be used for random signatures when creating new messages in Thoth. Thoth does not manage this folder: adding and deleting files from it is the responsibility of the user.
  216.  
  217. The “Thoth Startup” folder can be used to have one or more default news files open when starting Thoth. To use this feature, place aliass of the news files you want to open automatically (NOT the news file itself, nor the news folder, nor an alias to the news folder) in the “Thoth Startup” folder. Thoth does not manage this folder: adding and deleting an alias to a news file from it is the responsibility of the user.
  218.  
  219. The folder named “Thoth Stationery” holds the message stationery pad files used to define the personalities that can be used when you post. Again, Thoth manages this folder for you by automatically saving personality files there. You should only need to visit the folder yourself if you want to delete a no longer wanted personality.
  220.  
  221. A new folder is created for each news server that you add to Thoth. This folder contains the files and folders that are specific to that news server. A typical folder looks like this:
  222.  
  223. 
  224.  
  225. In this case the top file is the actual news file that stores all the information specific to a particular news server: the list of all available newsgroups, your subscribed group lists, and other settings for the server such as the number of connections to use and authentication information. The next 3 files are cache files that Thoth uses to save information about posts. The final file contains the list of pending queued downloads and messages to be sent. The “Thoth Outbox” folder contains message files for any unsent messages.
  226.  
  227.  Part Three: News Servers and Subscribed Group Lists
  228.  
  229. Are you just getting started with Thoth?
  230.  
  231. If you're using Thoth for the first time, please read the “!!READ ME FIRST!!” document for information on Thoth and how to get started. Please also read the “2) Getting Started” document, available from Thoth's Help menu, for step by step instructions.
  232.  
  233. Configuring a new News Server
  234.  
  235. Thoth allows you to read news from multiple news servers. You start reading news from a given news server by opening its news file. You can open additional news servers by opening their news files. The “Open Servers” hierarchical menu in the File menu is a shortcut for opening news servers. Any already open servers will be disabled in the menu of known news servers. The “Close Server” command lets you close an open news server.
  236.  
  237. To create a new news file for a news server, choose “New News Server” from the File menu. You'll be shown a dialog that has 3 panes.
  238.  
  239. 
  240.  
  241. Enter the name of your news server in the text box. Use the popup menu to select the maximum number of simultaneous news server connections you wish to use with this news server. If you have a fast network connection and do a lot of downloading of binary posts you may wish to choose the maximum of 4 if your news server allows this many connections. Otherwise 3 is usually a good setting. See “Using Multiple News Server Connections” in “Part One: Introduction and Overview”  for more information.
  242.  
  243. The top 6 checkboxes set some options on how Thoth will communicate with your news server. The screenshot above shows the settings that should work best with most news servers (i.e. all checked except for “Use LIST ACTIVE Command.”
  244.  
  245. If you want Thoth to check for new newsgroups each time the news file is opened, check the next box. Otherwise you can manually check for new groups whenever you wish using the “Check for New Groups” command in the Special menu.
  246.  
  247. The “Only Send One Message at a Time” checkbox is useful when you have enabled multiple queued transfer connections and have a connection (such as a cable modem connection) that's much slower at sending than receiving. You can then download and send at the same time, and not have all the available connections hogged by slow uploads.
  248.  
  249. Thoth tries to keep track of multi-part binary posts that are incomplete because some parts have not shown up on your news server. If you're using a news server that does poorly on getting all the parts for such posts, you may be wasting time and disk space and RAM trying to keep track of multi-part posts that will never be completed. If that's the case you can check the “Disable Parts Cache” checkbox and Thoth will not keep track of such posts.
  250.  
  251. Some news servers, especially independent commercial ones, require that you supply a username and password. These authentication settings are in the second pane of the “News Server Preferences” dialog. If you're using a news server that requires authentication, you'll probably need to click on the “Authenticate When Connecting” button and enter your username and password. A very few news servers require authentication only when you post a message. For these servers you should check the “Authenticate Only When Posting” button and enter your username and password. Most news servers run by ISPs do not use authentication. In that case you should click on the “Do Not Authenticate” button.
  252.  
  253. If your news server requires authentication, and you're positive you have the correct authentication settings entered, and you still get authentication errors when trying to connect to your news server, try unchecking the “Don't Send MODE READER” checkbox in the “News Server” panel to see if that makes a difference.
  254.  
  255. 
  256.  
  257. Once you've finished with the “News Server” and “Authentication” panes, click OK to close the dialog. Next you're presented with a new folder dialog, asking you where you want to create and save the new folder that will have the news server settings file. Use the dialog to navigate to where you want to create the new folder that will hold new files, then click on the “New” button to name and create the new folder. Finally you'll then see the “Open Server” alert asking you if you want to open the new server. Say yes. The program should then proceed to get the full newsgroup list from the news server.
  258.  
  259. Subscribing to Newsgroups
  260.  
  261. Once you have created a new news file and downloaded the list of newsgroups for that server, you can created one or more lists of subscribed newsgroups. Use the “News Server Settings” command in the Edit menu to display the “News Server Settings” dialog again. Go to the “Group Lists” pane of the dialog.
  262.  
  263. 
  264.  
  265. The “Add New” button lets you create a new group list window that will be displayed after you close the “News Server Settings” dialog. A dialog will be shown allowing you to name the group list window. Enter a name for the new window, then click OK to close the dialog.
  266.  
  267. The “Edit…” button can be used to edit the settings for the group list window, such as its name and whether it will be automatically opened when the news file is opened. For each subscribed group list window you can choose to have the window open automatically when the news file is opened, or you can open the window manually after the news file is opened using the “Open” button shown above.
  268.  
  269. When the “News Server Settings” dialog is dismissed any newly created group list windows will be shown. You can use the “Show Full Group List” command from the Windows menu to display the list of all newsgroups on your news server. Choose which newsgroups you wish to subscribe to, and drag them to a group list window. Use the Save command to save your group list. You can now begin to read news using Thoth.
  270.  
  271. Subscribed Group List Windows
  272.  
  273. In online mode the number to the left of the group is the number of unread posts for the group available from your news server. In offline mode the number is the number of unread kept posts for the group. A diamond symbol () means that the group has kept posts available (read or unread). If a group name is drawn in italics, it means the newsgroup is no longer available on your news server. The list can be sorted using the “Resort” command in the View menu.
  274.  
  275. 
  276.  
  277. To read a given newsgroup, just double-click the group name in the window to open an article list window showing the available posts. If you option-double click a group name, a “Maximum Number to Fetch” dialog will be shown. This allows you to open an article list window for the group showing less than the total number of available posts. This may be handy when you first subscribe to a newsgroup that has thousands of posts in it, and you just want to see the most recent hundred or so posts.
  278.  
  279. It's possible to export a subscribed group list to a text file. The export file dialog has a checkbox that lets you set the format of the exported group list. If the “save in .newsrc Format” checkbox is checked, then the group list is exported in the standard .newsrc format used by many different newsreaders. If you read news using multiple newsreaders, perhaps on different OS's, you can use this format to share your subscribed groups and what posts you've read among the different newsreaders. The Import command lets you import such a file into a subscribed group list window in Thoth. The other export format instead just lists each newsgroup and the range of article numbers on the server for that group and how many are unread. In either case if you hold down the shift key while choosing the Export command, you'll export just the groups in the window that are selected. Otherwise all the groups will be exported.
  280.  
  281.  Part Four: Filtering
  282.  
  283. Thoth has the ability to apply filters to articles displayed in article list windows. With the appropriate filters, you can label posts on subjects or by authors you find especially interesting or instructive, remove unwanted annoyance posts, and generally make your usenet reading faster and more efficient.
  284.  
  285. How Filters Work
  286.  
  287. Thoth classifies filters into six categories: 
  288.  
  289. 1) The global filter, with a filter group name “.”. Any filters in this group are applied first. The global filter group matches every newsgroup. This is the proper place to create common-interest filters to mark posts that might be overridden later by a more newsgroup-specific “(killed)” filter. For example, you might want to eliminate all posts with the word “money” in the subject line except in the misc.invest newsgroup hierarchy. To do this you'd create a “(killed)” filter for articles with the word “money” in the subject line for the “.” global filter group. Then you'd create a second non-“(killed)” filter for the regional filter group (see (3) below) named “misc.invest.” for articles with the word “money” in the subject line to bring back the posts removed by the global filter.
  290.  
  291. 2) User group window specific filters. If you have a user group file named “My Sub”, a filter group named:
  292.  
  293. .My Sub
  294.  
  295. (that’s a period followed by the name of the user group file) will be treated as a global filter for that user group window only. This filter will be applied after the regular global filter “.” but before any regional or local filters. This means that you can use just one filter file and still have filters that apply only to one user group window or another. This makes it easier to share filter files when you use more than one news server and therefore have more than one preferences file and user group file.
  296.  
  297. 3) Regional hierarchical filters, with filter group names of the form “name1.name2.”. These filter groups match any newsgroup whose name starts with the filter group name, excluding the final period. For example, consider a regional filter group named “comp.sys.”. This filter group will match the newsgroups comp.sys, comp.sys.mac, comp.sys.mac.comm, and comp.sys.next. These filters are applied in order of length. For example, suppose there are filters defined for the filter groups “comp.sys.” and “comp.sys.mac.”. When filtering the newsgroup comp.sys.mac.comm, first the “comp.sys.” filters would be applied, then the “comp.sys.mac.” filters.
  298.  
  299. 4) Multi-group filters, with filter group names that are regular expressions. The use of regular expressions means that such filters can match group names in various parts of the usenet hierarchy. Otherwise these are similar to regional filters, and are applied at the same time as regional filters.
  300.  
  301. 5) Local filters, with names identical to a newsgroup name. These apply only to the newsgroup named, and are applied second to last, so that any filtering they apply can supersede that performed by the earlier, more general purpose global or regional filters.
  302.  
  303. 6) A final global filter, with a filter group name “~”. Any filters in this group are applied last. This global filter group also matches every newsgroup. This is the proper place to create common-interest filters (all posts by yourself or the almost as notable John Norstad) or common-disinterest filters (to remove all MAKE.MONEY.FAST posts for example) that you want to ensure are labeled as interesting or (killed).
  304.  
  305. All filters are stored in the active “Thoth Prefs” file.
  306.  
  307. Filtering Philosophy
  308.  
  309. Filters in Thoth are intended to help the user decide which posts to read or download. By using filters the posts in a newsgroup can effectively be classified into several catagories: articles that seem to be interesting and which have been given one of the top labels(usually based on their subject or author), articles that are probably not interesting (often based on their subject, author, or to how many newsgroups they've been crossposted) and have been labeled as “(junk),” articles that are definitely not interesting and which should not be displayed at all and are labeled as “(killed),” and any remaining unlabeled posts that may or may not be of interest. The filtering system in Thoth is designed to quickly and efficiently categorize posts into these categories and then display the articles in such a way so it's easy to find and read the interesting posts.
  310.  
  311. Preferences
  312.  
  313. The “Filter Options” pane of the “Preferences” dialog is used to set most filtering options. Some additional options are set in the “Subject List Options” panel.
  314.  
  315. “Disable Filtering” turns the filtering option off by default. When group windows are opened, their initial filtering enabled/disabled setting is taken from this value. It’s possible to toggle the filtering enabled/disabled value for an open group filter by option-clicking on the Filter Groups icon button. The icon is drawn selected when filtering is enabled. When article list windows are opened from a group window, their initial filtering enabled/disabled state is inherited from the group window. Again, filtering for an open article list window can be toggled between enabled or disabled by option-clicking the Filter Groups icon button, which is drawn selected when filtering is enabled. To show the articles in an open article list window without filtering when the window was opened with filtering enabled, or to show with filtering the articles if the window was opened with filtering disabled, first option click on the Filter Groups icon button to toggle filtering on or off, then choose the Refilter command from the News menu.
  316.  
  317. “Ignore Label Priority” is used to determine whether filters with different labels are treated as equal rank or priority when applying filters to posts. See “Sundry Notes” below for a discussion of filter labels and priorities.
  318.  
  319. Filters can be set to expire a number of days after they have been created. Expired filters are removed from the filters file. If “Show Expiration Alert” is checked, the Status dialog will show at program startup if any filters have been expired.
  320.  
  321. “Keep Expired Filters” is intended to let you save and possibly reenable an expired filter. If this option is checked, expired filters are moved to a filter group that has the same names as the original group with a leading bullet (•) character added.
  322. character added.
  323.  
  324. 
  325.  
  326. Thoth filters support the concept of assigning an importance weighting factor, or score, to filters and articles. As filtering progresses, each article’s score is increased by the score value assigned to every filter that matches the article. For example, suppose that Brian Clark posts an article titled “New Thoth Version.” You have defined three filters. One filter labels all articles whose From: header includes the string Brian Clark. The score for this filter is 100. A second filter labels all articles whose Subject: line includes the word Thoth. The score for this filter is 500, because you are very interested in posts about Thoth. A third filter labels all articles whose Subject: line contains the word money. The score for this is set to -500, because you hate to see MAKE.MONEY.FAST posts all the time.
  327.  
  328. So, when filtering articles, Thoth tries all three filters. The first two match the post, assigning a score of 100 + 500 = 600 to the article. A MAKE.MONEY.FAST post gets a score of -500. If you set the “Score to Kill” entry in the Filter Options dialog to 0, the MAKE.MONEY.FAST post will be killed (removed from the article list window) because its score is less than the value you set. You can also set a score below which articles will be marked with the (junk) label (see below).
  329.  
  330. The remainder of the items in the dialog are used to customize the labels that are applied to filtered articles. Initially there are a total of 12 possible labels. They are displayed in order of importance from top to bottom. Threads with articles assigned labels from the top of the list will sort to positions higher in article list windows that threads containing lower rank labels, assuming that the sort by label option has been enabled. All the labels except for the special bottom 3 can be dragged to establish a different order of importance. The color of these labels can be edited by selecting the item in the list and clicking on the “Edit Color” button. Just like Finder labels, a label can have both a color and a name associated with it. The name can be edited by selecting the label in the list and clicking on the “Edit Text” button.
  331.  
  332. The bottom three labels are special. They can’t be edited or reordered. (Unlabeled) is used to mark an article with a filter without otherwise labeling it. This would usually be used when the “Articles Not Matched Are Deleted” option for a filter group. (killed) is used to remove annoyance posts from article list windows. (junk) is used to label articles that are probably annoyance posts but which you might want to look it.
  333.  
  334. The “Make Default” button is used to make one label the default for newly created filters. The default label is shown with a checkmark beside it in the labels list. It does not need to be the topmost label.
  335.  
  336. Creating and Editing Filters
  337.  
  338. Filter-related commands are in the News menu. These commands are used to create new filters, and to view and edit existing filters.
  339.  
  340. “Filter Groups” brings up a window listing the available filters. Using the controls in the top portion of the window, it's possible to list just the filters in a single filter group, or all the filters, and other combinations. Each filter is displayed as an individual list item. Each such item is two lines high. The top line shows the filter group the filter belongs to, its label, and its score. The bottom line shows what header the filter matches, what is the search string (or date or line count values for date and line count filters), the expiration period for the filter, and how many days ago it was last used. If the entire filter group is disabled, the filter group name is drawn in italics. If an individual filter is disabled, the search string is drawn in italics.
  341.  
  342. 
  343.  
  344. The topmost portion of the window contains 8 icon buttons. The leftmost one (icon of a label with a radio button) is used to edit the settings for an individual filter (if just one filter is selected in the list) or to batch change a number of settings for multiple filters (if more than one filter is selected in the list). This is followed by buttons to create a new filter (icon of a label with a plus sign), delete the selected filters (icon of a label with a negative sign), or duplicate the single selected filter (icon of a label with a multiply sign). The fifth button from the right (icon of a group of labels with a radio button) is used to edit the group settings for the filter group corresponding to a single selected filter. This is followed by buttons to create a new filter group (icon of a group of labels with a plus sign), delete the filter group (and all its associated filters) associated with a single selected filter (icon of a group of labels with a negative sign), and duplicate the filter group associated with the single selected filter (icon of a group of labels with a multiply sign).
  345.  
  346. Under the icon buttons are the controls used to display which of the available filters are shown in the filter list. The filters list is very powerful, and can be used for many different tasks, and these different tasks are made possible by setting these controls appropriately.
  347.  
  348. A common task is to display or edit the filters for a single filter group, perhaps changing the order in which they are applied. Because the list can display filters in more than one filter group, and in orders other than that in which the filters are applied, it's important to ensure the list display is configured appropriately. To change the filter order (done by dragging the filters within the list), the window must be set up to display the filters for just one filter group in the order they will be applied. This means setting the controls as shown above: the first popup should be set to “name is” with the exact name of the filter group entered in the text field on the right, the header popup should be set to “all” (to display all the filters, and not those that match on a particular header), the sort mode should be set to “normal” (meaning the order in which the filters are applied) with the sort direction as shown (ascending order), and the bottom text field should be blank (to match all possible filter match strings). The rightmost popup menu can be used to enter the filter group name from a list of current filter groups. Using this popup menu is the easiest way to switch between filter groups.
  349.  
  350. Other tasks call for other settings. To display all the filters, ensure that both text fields are empty and set the header popup to “all.” You can then choose to display just those filters that use a particular header. Or you can change the sort mode to display the filters in order of label, or score, or expiration. You can see how many low or high score filters you have, how many haven't been used in a long time. You can then select several filters and change all their labels at once, or change how they're expired, and other similar tasks. To show all the filters that would be applied to a certain newsgroup, set the first popup to “matches newsgroup” and type in the group name to the right of the popup, and set the “Header is” popup to ”all.” This will show all the filters that would be applied to that newsgroup with the exception of any user group window specific filters. If the “Sort by” popup is set to “normal” then the order of the filters will also be the order in which they are applied, with the exception of any filter groups whose names are regular expressions.
  351.  
  352. At any one time either one of the edit fields at the top of the window or the filter list itself has the focus and will respond to Edit menu commands. When an edit field is the item with the focus, it's drawn in the usual way with a ring around its outside. When the list has the focus, none of the edit fields are drawn with a focus ring. When the list has the focus, it's possible to copy selected filters with the Copy command in the Edit menu. The Clear and Cut commands work similarly. If any filters have been previously copied, and the list has the focus and is set up to display the filters for just one filter group, the Paste command will be enabled and can be used to paste the filters into that filter group. If instead an edit field has the focus, the Cut, Copy, Paste, and Clear command work on the selected text in that edit field. As is usual, clicking on an edit field or the list gives it the focus, and pressing the tab key advances the focus to the next item.
  353.  
  354. When editing a filter, via double clicking on the filter in the “Filters List” window or via a “New Filter…” menu commands; you are presented with the “Edit Filter.” The dialog is intended to be read from top to bottom left to right as an English sentence.
  355.  
  356. 
  357.  
  358. The topmost type-in popup menu is used to define the filter group for the filter. The initial value corresponds to the current newsgroup when a new filter is being created. Below this is a popup menu used to select which header line will be used for filtering. Most headers support filtering by matching text in the header line. For example, you can choose “From” as the header and then in the text box below the popup menu enter the text “Brian Clark” to filter posts by the author of Thoth. Just above the textbox is a third popup menu that is used to select what kind of text matching will be performed. Most often the “Contains the String” item is the best choice, but you can also create filters that look for specific words, or phrases that start or end with a specific string. By checking the “Ignore case” checkbox, string matching will treat upper and lower case characters as the same. Much more powerful (but also slower and more difficult to use) matching can be done by selecting the “Contains the Reg. Exp.” item to perform regular expression matching.
  359.  
  360. Thoth does its best to insert text from all the available headers into the textboxes shown for all the possible settings of the header popup menu. If the filter dialog is opened when an article window is topmost, all the headers from that article will be placed in the appropriate textboxes. If the dialog is opened from an article list window with a selected article, text from the available headers (those displayed in the article list window) will be placed in the textboxes. If no article is selected, the textboxes will all be empty.
  361.  
  362. When creating a new filter, either via the Filters menu or by clicking on a button in a article list window or in the Filter Groups dialog, the default header being filtered is the Subject header. If you hold the option key down when selecting from the Filters menu or clicking on a button, the default header is instead the From header.
  363.  
  364. Note that filters for the Date and Line headers do not use string matching. For dates you instead choose to filter articles more than a given number of days old, or less than a given number of days old. Thoth is smart enough to know that if you enter a number of 2 for “less than,” and 4 for “more than,” that you want to filter articles that are less than 2 or more than 4 days old; while having the numbers reversed means you want to filter articles that are less than 4 and more than two days old. Filtering on lines works in a similar manner. With dates there is an option to filter or not filter articles with missing or invalid date headers. For lines there is an option to filter or not filter articles with missing or zero line counts.
  365.  
  366. The label list on the right hand side of the dialog is used to set what kind of a filter is being defined. The uppermost items are used to mark posts with a specific label color and name, similar to Finder labels. The colors, labels, and order of these items can be edited in the “Filter Options” portion of the “Preferences” dialog. The bottom three entries are special. (Unlabeled) is used to mark a post as of interest without assigning a label color or name. (Junk) is used to mark articles that are probably unwanted but which may be on interest and should be displayed in article list windows. The final entry, (Killed), is usually used to remove unwanted annoyance posts like MAKE.MONEY.FAST. The order of the items in the list defines their priority, with the topmost being the most important. When sorting by label, threads containing articles labeled with the topmost label will be displayed at the top of article list windows, followed by any threads labeled with the second from the top label, etc.
  367.  
  368. A filter can be set to expire a specified number of days after it is created. This will be useful when a filter is used to select articles of passing interest. Without this option the filters file would continue to grow as new filters are added, and the time it takes to filter article list windows would also continue to increase. Setting the expiration time to 0 makes the filter perpetual.
  369.  
  370. Individual filters can also be enabled or disabled, using the “Enable Filter” checkbox. Disabled filters are displayed in italics in the Filter Groups dialog.
  371.  
  372. When several filters have been selected and the leftmost icon button pressed, the “Modify Filter Settings” dialog is shown. It is used to make bulk changes to several filters at once. The filters' label, score, expiration, and enabled settings can all be changed or left as-is. Each section of the dialog has a checkbox that enables or disables changing that particular group of settings. For example, if the “Change label Settings” checkbox is checked, then after dismissing the dialog via the OK button all the selected filters will have their labels set as shown in the dialog. If the checkbox is not checked, then the label settings will not be altered.
  373.  
  374. 
  375.  
  376. When creating, editing, or duplicating a filter group, the “Filter Group Settings” dialog is shown. It is used to set those values that apply to all the filters in the filter group.
  377.  
  378. 
  379.  
  380. Finally, there are two other filter commands in the News menu. “Kill this Subject” creates a new, local filter for an article selected in the article list window or shown in an article window. The filter will kill all posts having the same subject as the article. Similarly, “Kill this Author” creates a new local filter to kill posts by the article’s author. To instead create a new global filter, hold down the option key when selecting the command. These two commands are shortcuts that bypass the Edit Filter dialog, which is still the best way to create a new filter because of the flexibility it offers in setting the filter weighting factor, expiration time, etc.
  381.  
  382. Sundry Notes
  383.  
  384. Filter priority. Normally the rank of a label (its order in the list of labels) is used to determine whether a later filter will override a previous filter's labeling of an article. The rules are:
  385.  
  386. 1) A kill or junk label always overrides any previous label. A kill or junk label may itself be overridden by any subsequent filter. Thus it is possible to unkill an article with a later filter.
  387. 2) Non-kill and non-junk labels will only override a previous label of equal or lower rank.
  388.  
  389. If the option “Ignore Label Priority” is checked in the “Filter Options” preferences panel, then all filters are treated as equal priority regardless of label. This means that later filters will re-label a post even if their label priority is lower than that of the post's existing label. Use this setting when you want all filters to have the same priority, and are just using the labels to apply different colors to posts and not a different priority. 
  390.  
  391. Killing articles by score. After all filters have been applied to the articles in a article list window, a final pass through the posts is made to mark as killed all articles with scores less than the value designated in the Filter Options dialog. This permits somewhat more selective killing than would be the case if articles were killed as soon as their score dipped below the kill threshold. For example, you might want to kill all posts with “money” in the subject lines unless you're reading alt.make.money.fast. You would then set up a global filter to score at -500 all articles with money in he subject line, and a local filter in alt.make.money.fast to score these articles at +500. Then the posts will be killed everywhere except in alt.make.money.fast (assuming the default kill threshold score of 0). Also, when filtering using scores, the score is applied for every filter match, even if the filter is a (killed) or (unlabeled) one. Junking by score works the same way.
  392.  
  393. A filter icon has been added to message windows. It is used to automatically create a filter to label the message and any replies it generates. When clicked, a dialog is displayed allowing the label, score, and expiration for the filter to be set. One new (local) filter is created for each newsgroup to which the message is posted. Each filter is based on the subject header and the subject of your message (truncated to 31 characters). The filter will be set to expire the indicated number of days after the filter was last matched or edited.
  394.  
  395. Additional Filter Settings
  396.  
  397. There are a few settings in the “Article List Options” pane of the “Preferences” dialog that affect how labeled posts will be shown in article list windows.
  398.  
  399. “Expand Labeled Threads” is pretty much self explanatory. If a thread contains an article that has been labeled, the thread will be automatically expanded when displayed in a article list window.
  400.  
  401. The “Show Killed Posts” is used to determine whether posts that have been labeled with the (killed) label will be shown in article list windows. Normally they would not be: that's the whole point of the (killed) label. But sometimes it may be useful to see exactly which posts are being labeled with the (killed) filter, perhaps to fine tune some (killed) filters to prevent them from being applied over-zealously. In that case checking the “Show Killed Posts” checkbox allows such posts to be displayed in article list windows, where you can use the “what filter labeled this post” button to see what filter marked a given post as (killed). 
  402.  
  403. Finally “Apply Multiple Labels” determines how labeled posts will be drawn. If it is checked, the Thoth will distinguish between filters that are applied to different headers, remembering if a filter was applied to the From: header or the Subject: header, etc. Instead of the filter label color being applied to the entire article in the list, each header will be displayed in the color of the filter that labeled that header. This can be helpful if you have a lot of labels and you think you may not immediately recognize from a listed article why the article was labeled. But it can also be more confusing, if there were multiple filters on different headers that matched the post, especially if the post should be labeled as (junk). Also, because it's possible to filter on a header that is never shown in an article list window (such as filtering on Message-ID), when multiple labels are enabled all labeled posts have a '§' marker drawn beside them in the color of the overall label for the post. 
  404.  
  405. Live Filtering
  406.  
  407. There's a final kind of filtering that can be done to article list windows, the full group list window, and the filters list window itself. For these kinds of window you can choose to temporarily show or hide the list items that match a search string. An example is shown for the full group list illustrated below:
  408.  
  409. 
  410.  
  411. In this case the full group list normally contains nearly 45 thousand newsgroups. That can make it very hard to find the newsgroups you're interested. If “Show Details” is enabled for the full group window, the panel at the top of the window contains a text box where a search string can be entered, a checkbox to set whether searching should be case-sensitive or not, and a popup menu used to set the string matching options. You can enter a string and display only those newsgroups that match the string. An empty string is used to show all the available groups.
  412.  
  413. The same feature can be used with article list window to show or hide posts that match or don't match the search criteria you specify.
  414.  
  415.  Part Five: Article List Windows, and Sorting and Threading
  416.  
  417. Introduction
  418.  
  419. In Thoth, article threads (groups of related posts that share the same basic subject line) can be sorted in a number of ways: article number, subject, author, date, label, line count, and priority.
  420.  
  421. Sorting by subject does just that, threads are sorted by the canonical (ignoring Re:, etc.) subject of the thread. The other sorting methods are equally self-explanatory. They are available when the matching header has been selected for downloading when the newsgroup was opened. For example, to sort by author you need to have “Show Authors” checked in the “Article List Options” part of the “Preferences” dialog.
  422.  
  423. When sorting by author, etc. the contents of threads are examined. A thread containing posts by Clark and Xanthus would be placed above a thread with posts by Norstad and Spindler when sorting by author using the normal order, since the first posts would be sorted according to “Clark” and the second by “Norstad.” In this case choosing “Sort in Reverse Order” would not reverse the order of the threads, since the first thread would sort by “Xanthus” and the second by “Spindler.” When “Sort High Priority to Top” is enabled, articles in article list windows are first sorted by priority color, and then by the regular sorting criterion (author, subject, etc.) Note that the reverse sort option does not affect sorting by priority. Priority can be determined by one of two means: label order, or score. This is set by a checkbox in the “Article List Options” pane of the “Preferences” dialog.
  424.  
  425. “Normal” sorting order is defined as follows:
  426. • When sorting by author, threads are sorted according to the normal alphabetical ordering by the last name of the authors. If two or more threads have the same author, they are then sorted in alphabetical ordering by the canonical subject line.
  427. • When sorting by subject, threads are sorted according to the normal alphabetical ordering by the canonical subject line.
  428. When sorting by Lines, threads with long articles are sorted to the top.
  429. • When sorting by dates, threads with more recent articles are sorted to the top.
  430. • When sorting by score, threads with high scoring articles are sorted to the top.
  431.  
  432. Sorting is accomplished by selecting one of the options using the sorting menu items in the View menu, or by clicking on the appropriate column label in the article list window (when column labels are shown). As in the Finder, the column by which sorting is determined is drawn as a pressed button. Shift clicking the currently pressed label button switches sorting to by article number.
  433.  
  434. Note that column labels in article list windows can be enabled or disabled on the fly using the “Show Labels/Hide Labels” item in the View menu.
  435.  
  436. Changing the sort order when a article list window is frontmost will resort the articles in that article list window. The order of sorting can be reversed by selecting that option in the View menu, or by clicking on the stacked blocks icon in the leftmost column label (when labels are shown).
  437.  
  438. 
  439. The icon buttons at the top of article list windows (displayed when “Show Icon Buttons” is enabled) are used to perform various tasks. As in other windows, some are simple pushbuttons that are used to display a dialog and change some settings for the window. Others are toggle buttons that in addition to displaying a dialog also have an on or off state. An example of this is the filters button. When in the on state (drawn as pressed), it means that filtering will occur when the window is rebuilt (due to selecting a new sort order, etc.)
  440.  
  441. Preferences
  442.  
  443. Any new article list windows use the default sort method chosen in the “Article List Options” portion of the “Preferences” dialog. This is also where the choice is made regarding which article headers to download and show when creating a new article list window, and how articles are ordered within a thread.
  444.  
  445. 
  446.  
  447. By default reference threading is used. This is the best setting for text newsgroups, as the article list window will show an indented list of articles in the thread showing which article is a reply to which. If there's a gap in the article list (article A prompted a reply B which in turn prompted a reply C, but only post A and C are shown), the gap is represented by the '…' symbol instead of a blank indentation.
  448.  
  449. If the “Use XOVER Command” checkbox in the “News Server” pane of the ”News Server Settings” panel is not checked, additional headers must be downloaded from the news server to perform reference threading, and the time to fetch the article information is increased. Performing the article reordering will also take some additional time, which may or may not be noticeable depending on how many articles are in a thread and how fast is the Macintosh. Note that the contents of a thread (what articles belong to a given thread) is still always determined by the Subject line. This is done intentionally so that when a poster changes the subject of a reply a new article thread is created.
  450.  
  451. The simplest form of threading is “by Article Number,” which is in the order in which the articles were received at your news server. In general, this is a pretty random order, and it’s common for replies to show up before the original post, etc. It is a good default setting for binary newsgroups, as it minimizes the work that Thoth has to do to try to arrange posts in their proper order, and because binary post threads get special handling anyway to try to put the individual parts of multi-part posts in the correct order.
  452.  
  453. Choosing “Don't Thread” from the popup menu means that article threads won't be created: all the articles will be listed individually in the article list window. This may be useful in certain specialized circumstances (you want to see the range of dates of all the posts in a article list window, so you sort by date and don't create threads so that all the posts are displayed individually in chronological order). This option will also display all the articles from the parts cache, which is the cache of saved article headers for seemingly incomplete multi-part posts downloaded from the news server in the recent past. Normally articles from the parts cache for a particular thread are only shown if there's a new part fresh from the server for that thread (i.e. no threads consisting exclusively of articles from the parts cache are ever shown).
  454.  
  455. There are a number of options that control whether certain kinds of posts will be shown in the article list window. The “Show Killed Posts” checkbox is used to determine whether posts that have been labeled with the (killed) label will be shown in article list windows. Normally they would not be: that's the whole point of the (killed) label. But sometimes it may be useful to see exactly which posts are being labeled with the (killed) filter, perhaps to fine tune some (killed) filters to prevent them from being applied over-zealously. In that case checking the “Show Killed Posts” checkbox allows such posts to be displayed in article list windows, where you can use the “what filter labeled this post” button to see what filter marked a given post as (killed). Normally this should be left unchecked.
  456.  
  457. The checkbox labeled “Show Incomplete Binaries” can be used to set the default behavior for showing or hiding newly arrived articles that are part of incomplete binary posts. A command in the View menu lets you toggle the setting on and off for an open article list window. Note that if the current threading mode is set to “Don't Thread” this setting will have no effect. When threading is disabled there's no way for Thoth to distinguish which posts are part of mult-prat posts, so all such posts, even old articles in the parts cache, will be displayed.
  458.  
  459. The “Show Read Articles” checkbox is used to determine whether any articles that have been marked read should be shown. When an article list window is first opened this setting only affects the showing of any kept articles that have been marked read. Articles that have been marked read by a (junk) filter will still be shown. So will posts marked read by a (killed) filter if the “Show Killed Posts” option is checked. A command in the View menu lets you toggle between showing read articles and hiding them. Holding down the option key while choosing “Show Read Articles” will remove the read articles currently shown in the window without toggling the mode back to showing read posts.
  460.  
  461. Similarly the “Show Kept Articles” determines (in online mode) whether kept articles will be shown. Again a View menu command allows the current setting to be toggled. In offline mode kept articles are always shown (that's the only kind of article that can be displayed offline).
  462.  
  463. An important setting in the dialog is the “Mark Hidden Articles Read” checkbox. It determines what happens to any articles that are not shown in the article list window (because they have been hidden via live filtering, or they're incomplete binary posts, etc.) when it is closed. When most people who read the news  they either read one group, mark the posts read, close it and read the next group; or read one group, then use the Next Group command to automatically mark it as read and go on to the next group. For this kind of newsreading the correct setting for “Mark Hidden Articles Read” is checked. That ensures that all the posts are marked read, so that the next time you read the group you only ask the news server for the posts that have arrived since you last read the newsgroup.
  464.  
  465. If the various options to hide posts from article list windows aren't used then the “Mark Hidden Articles Read” setting makes little difference. But it is especially important if “Show Incomplete Binaries” is not checked. Otherwise each time you read each binary newsgroup Thoth would try to refetch the headers for all the incomplete binaries from past reading sessions, plus any new posts. This would mean slow performance, a lot of extra work being done to fetch and deal with headers for articles that would never be shown, and potentially fewer new posts that could be shown. It could be very confusing to see the program working so hard and taking so long to fetch headers for posts that will not be displayed, especially as with each newsreading session this takes more and more time as a bigger and bigger backlog of old articles that were never marked read builds up.
  466.  
  467. Many of these settings described above can be customized for particular newsgroups, using the Newsgroup Settings feature. See “Part Seven: Newsgroup Settings”  for more information.
  468.  
  469.  Part Six: Messages and Personalities
  470.  
  471. Introduction
  472.  
  473. Thoth lets you use different personalities when posting or emailing messages. A personality is a collection of settings that define some of the contents of the message, such as your email address, your signature and organization, and optional extra headers such as X-Face. These can be used to personalize your posts and allow you to use a different email address or signature or X-Face in different situations.
  474.  
  475. A typical message window is shown below:
  476.  
  477. 
  478.  
  479. The panel below the icon buttons contains four popup menus. The one on the top right is used to set the Mail-Copies-To header that tells others whether or not you'd prefer an email copy of any posted response to your message. The “Omit” setting does just this: no header is added to your posts, and readers can choose for themselves how to respond. “Nobody” means you're telling people that you do not want an email response to your post if the person also posts a response. “Poster” means that you'd appreciate an email copy of any posted reply.
  480.  
  481. Some additional settings can be shown and edited by clicking on the message settings icon button:
  482.  
  483. 
  484.  
  485. This gives you a chance to change all these settings for this particular message. The items in the top two panels affect the contents of the message when it is sent. The formatting options in the bottom panel only affect how it is shown to you in the message window.
  486.  
  487. The settings in the “Attached File Settings” dialog are also saved as part of a personality. This makes it possible to use a personality to set the file attachment encoding method, segment size, and whether the name of the attached file comes first or last in the subject header. You can use different personalities to create different settings for these items, and set them appropriately for each newsgroup by creating an appropriate personality and using a newsgroup setting to make it the default personality for that newsgroup or newsgroup hierarchy.
  488.  
  489. Switching Between Personalities
  490.  
  491. The personality popup menu is used to switch between different personalities. Choosing a different personality updates the message window with the various personality settings. These include some settings from the “Message Settings” dialog (the “full name,” “email address,” and “anti-UCE address” settings), various message headers (Reply-To, Organization, extra mail, and extra news), and the signature.
  492.  
  493. There's always a personality named None. The settings for the None personality are taken from the values in the “Preferences” dialog. Because there's no place in the “Preferences” dialog to set certain optional items, such as your signature and organization and extra headers, these will be blank when using the None personality.
  494.  
  495. It's almost always useful to create a special personality named Default. This personality will be used when opening a new message window when no other personality has been set via a group setting. By creating a personality named default, you can have a signature, etc. that shows up in all your posts.
  496.  
  497. The newsgroup setting feature of Thoth can be used to set the initial personality that new message windows will use. This makes it easy to set your return email address and signature, etc. based on what newsgroup you're reading.
  498.  
  499. Creating and Editing Personalities
  500.  
  501. To create a personality, use the “New Personality” command from the File menu. This displays a simplified message window. Enter the desired text in the two extra headers and signature portions of the message window. The open and make any needed changes in the “Message Settings” dialog. A typical use for a personality is to provide a different email address for replies. To create such a personality you'd use the “Message Settings” dialog to change the “full name,” “email address,” and “anti-UCE address” settings. If you wish to add a signature to your posts, enter the desired text into the Signature field of the message window (shown when “Show Details” is enabled). To add an X-Face picture to your posts, first use a graphic program to create the original picture, then use a program like “Saving Face” or ”GraphicConverter” to convert it to the correct X-Face header text. Then paste that text into the “Extra news header lines” text field in the message window (which again is shown when “Show Details” is enabled).
  502.  
  503. Next, save the window using the ”Save As” commands. You'll be asked for the name of the personality. The new personality is automatically added to all the personality popup menus. If the file was named “Default” this will create a new default personality that overrides the settings in the “Preferences” dialog.
  504.  
  505. It's just as easy to edit an existing personality. Again, use the “New Personality” command to open a simplified message window. Then choose the personality you wish to edit by choosing it from the Personality popup menu. This gives you a window with all the personality settings for that chosen personality. Make whatever changes you wish to the signature, headers, and “Message Settings” items. Then save the message as above, replacing the existing file, using the name of the personality you wish to change.
  506.  
  507. Preferences
  508.  
  509. Many of the options for message windows are set in the “Message Options” pane of the “Preferences” dialog:
  510.  
  511. 
  512.  
  513. This is where you enter your default name and email address here. You can also choose to enter an “Anti-UCE” email address. If this field is filled in, this email address is used whenever you post a message to usenet. If you don't wish to receive an email response to your post, and don't wish to receive junk email from scoundrels who cull email addresses from usenet posts to use for bulk emailings, you can use this feature. Check with your ISP for what address to use. Many ISPs provide a "dead letter box" email address for just this purpose. By using a valid email address you don't increase internet congestion by causing bounced email messages. If it's your intention to use an invalid email address, please use one that ends in “.invalid” such as “never@spam.invalid” because such addresses are guaranteed not to conflict with someone else's real email address. Any mail messages you send will always use the upper email address.
  514.  
  515. An unofficial rule is that signatures should be limited to 4 lines of no more than 80 characters each. The program will warn you if you try to send a message with a too-long signature. It won't warn you more than once per session about any given signature, and you won't be warned more than 5 times per session. After you have been warned 5 times, you can permanently disable future warnings by unchecking the “Warn About Too Long Signatures” checkbox. This checkbox is disabled until this minimum number of warnings have been shown. Note that if you choose to post with a long signature, that signature will always be shown in your message window. You can't choose to hide a long signature.
  516.  
  517.  Part Seven: Newsgroup Settings
  518.  
  519. Introduction
  520.  
  521. Newsgroups settings are a powerful feature of Thoth. They let you tailor the behavior of the program on a newsgroup-by-newsgroup basis. In effect, you can have custom preference settings for any newsgroup.
  522.  
  523. Clicking on the newsgroup settings icon button in a group window displays the “Newsgroup Settings” dialog. This dialog is used to create new settings and edit or delete old ones.
  524.  
  525. 
  526.  
  527. Naming of newsgroup settings is similar to that of regional and local filters. A settings named “comp.sys.mac.app” is a local setting that will apply custom settings just to that one newsgroup. A settings named “comp.” is a regional setting that can be applied to all the newsgroups in the comp. hierarchy. Note that there's no special global settings named “.” as there is for filters, because the purpose is served by the regular preference settings.
  528.  
  529. Searching for an applicable newsgroup setting when opening a article list window, etc. is done in the opposite order that filters are searched for. As an example, suppose a article list window for the newsgroup comp.sys.mac.apps is being opened. The program first looks to see if there's a newsgroup setting that exactly matches the group name comp.sys.mac.apps. If there is, that setting is used. Otherwise the program checks to see if there's a regional setting named “comp.sys.mac.” and if so it is used. If not, a check for “comp.sys.” is done, and so forth. Also unlike filters, newsgroup settings are not applied in succession. The first matching newsgroup setting is used, and no others. If there's no match, the preference settings are used.
  530.  
  531. Editing a newsgroup setting is done in a three pane dialog that's similar to the “Preferences” dialog. Each pane displays the settings for a certain kind of window. The “Article List Options” panel is used to set the options for article list windows. This can be handy for speeding up newsreading and reducing article list window clutter. For example, for binary newsgroups you can choose to show line counts and sort by author. For discussion newsgroups you can omit showing line counts and sort by subject.
  532.  
  533. 
  534.  
  535. A second pane is used to set the options for article windows. This can be very useful if you subscribe to newsgroups that have different language or character set requirements.
  536.  
  537. 
  538.  
  539. The third pane sets the options for message windows. As for article windows, it may be useful to set the charset used for new messages based on the newsgroup if you post to both western European language and other language newsgroups. You can also set which personality is used by default, a very useful feature, especially if you have multiple email accounts or ISPs used to read the news. You can use a standard email address for the general posts you make, and use the local address when posting to the ISP's local newsgroups.
  540.  
  541. 
  542.  
  543. It is important to note the distinction between editing a newsgroup setting selected from the list of settings in the “Newsgroup Settings” dialog as described above and editing the setting for an open article list window by clicking on the “Edit Newsgroup Settings” icon button in an article list window or choosing the “Edit Newsgroup Settings” command from the Edit menu. When you edit the settings for an open article list window you are only editing the copy of the settings used for that article list window. The items in the “Article List Options” pane are disabled as they can't be changed for the open window, and any changes made to the “Article Options” or “Message Options” panes will only be applied to new windows opened from that article list window and not to any already open article or message windows. To edit newsgroup settings so that the changes are applied to all subsequently opened windows, you must select and edit the setting from the “Newsgroup Settings” dialog.
  544.  
  545.  Part Eight: Character Sets
  546.  
  547. Introduction
  548.  
  549. Thoth supports character transliterations other than Mac <-> Latin1.
  550.  
  551. Not everyone in the world uses the same alphabet, and not all computers have the same character sets mapped to the 256 different possible 8-bit character codes. The use of standardized character sets and transliterations helps to work around some of the problems this causes.
  552.  
  553. Thoth includes support for transliteration tables to provide support for languages other than those that use the built-in Latin1 transliteration support. This makes it easy for third parties to customize the program for non-English languages (such as Cyrillic) without having to modify and recompile the program code, and without losing the ability to effectively post to and read English language newsgroups. Thoth also supports translator plugins, for languages (like Japanese) that require more complicated processing than just a simple transliteration of characters.
  554.  
  555. Translator files
  556.  
  557. When Thoth is first launched, it finds (and creates if necessary) a folder named “Thoth Translators” in the same folder as the application itself. It scans this folder for files that have the necessary ‘taBL’ resources, loads the transliteration tables and adds the names of the tables to some transliteration menus. It also loads in the same manner any translation plugins. These appear as popup menus in a number of dialogs throughout the program, and allow the user to specify what kind of character transliteration will be performed. For those who want to create new transliteration tables, the format of these files is described the end of this section. Information on writing a plugin translator for Thoth is also available.
  558.  
  559. Preferences
  560.  
  561. The “Transliteration Options” panel of the “Preferences” dialog lets the user set the default character transliteration that will be performed when displaying articles, when posting a message, and when sending a message. By default these are set to the fixed values used by older versions of Thoth (Mac to Latin1 when sending; Latin1 to Mac when receiving).
  562.  
  563. 
  564.  
  565. The default transliteration done on articles and messages can also be set for individual newsgroups by using the “Newsgroup Settings” dialog. The transliteration can also be changed when sending a message by clicking on the “Message Settings” button in message windows. Selecting “Article Format” in the View menu for an article window lets you change the font and character set mapping for the open article window. Finally, when sending a message, Thoth now also inserts proper MIME headers, indicating what character set was used.
  566.  
  567. One other common transliteration that may be useful is a Mac to US ASCII conversion. This attempts to replace non-ASCII characters in the Mac character set with the nearest matching ASCII character. For example, all the forms of accented e characters (é, è, ê, ë) are replaced with a plain e. This can be useful for emailing a message to a user whose email system doesn’t handle 8-bit characters. Included with the Thoth distribution is a sample Mac to US ASCII table, located in the “Tables & Plugins” folder. Just place the file “Macintosh -> US ASCII” in the “Thoth Translators” folder and you’ll be able to specify this transliteration when sending messages. Also included are a number of additional tables, thanks to Andreas Prilop, as well as Japanese and Chinese translation plugins thanks to Dan Crevier. Note that if you choose to install plugins, you may need to increase Thoth’s memory allocation somewhat. In particular, all three Big5 Chinese plugins require a fair bit of additional RAM. An extra 200 kB for Thoth is recommended in this case.
  568.  
  569. Thank you!
  570.  
  571. Special thanks to Jean-Pierre Kuypers for all his help in testing the new character set transliteration features, and to Andreas Prilop and Dan Crevier for their help in making additional translators available, as well as Tetsuya Mizutori and Xiaolin Zhao for their assistance in getting the Japanese and Chinese plugins to work properly.
  572.  
  573.  Part Nine: Queued Downloading and Sending
  574.  
  575. Introduction
  576.  
  577. Many people like to take advantage of the binary posts that are found in certain newsgroups. But downloading such posts can take a long time, and can easily hog the limited transfer rates available to people using dialup connections. The same is true for sending messages. A way is needed to make it as easy as possible to download posts or send messages while still permitting normal newsreading in other newsgroups. It's also necessary to be considerate to others (by not making excessive connections to the news server, which may also limit the number of simultaneous connections an individual can make) and to yourself (because you may need to check mail, do ftp file transfers, or web browse while downloading files).
  578.  
  579. Thoth addresses these issues with its queued downloading and sending feature. The user can choose to use from one to three connections to a particular news server (one less than the maximum number of connections enabled for the news server). Up to six connections can be used for for all opn servers. These connections will be opened and closed at need and used to sequentially download the binary (or text) posts that are selected for downloading and to send any messages the user creates.
  580.  
  581. Preferences
  582.  
  583. Enabling additional news server connections to facilitate queued transfers (and article list window opening) is done in the “News Server” pane of the ”News Server Settings” dialog:
  584.  
  585. 
  586.  
  587. The popup menu is used to configure the maximum number of news server connections that the program will have open at any one time. From two to four connections may be chosen. Some news servers limit the number of simultaneous connections that a given user can have open. The popup menu should not be set to larger than this number of connections, or attempts to read the news may be unreliable as the news server rejects new connections or terminates existing ones. Typically when this happens you will see an alert stating that a connection to the news server could not be obtained or that there's a problem with your network connection. The solution is to verify with the news server admin how many server connections can be used at one time and to configure the program to not use more than this number.
  588.  
  589. In general, one connection is reserved for normal interactive newsreading tasks like opening a new article, checking for new posts, performing a search, etc. The additional news server connections can be used for doing background queued tasks like opening article list windows and sending or downloading posts. These tasks compete with one another for available news server connections. Opening article list windows, which uses a maximum of one connection, is given a higher priority than queued transfers, which may use from one to four connections depending on how many queued transfer tasks are enabled.
  590.  
  591. The “Only Send One Message at a Time” checkbox can be used to limit the number of news server connections used to send messages to one. This is useful in circumstances where the news server prohibits or has a problem with multiple simultaneous posts, or where posting is much slower than downloading.
  592.  
  593. The “Disable Parts Cache” checkbox can be checked to keep Thoth from remembering the headers for multi-part binary posts that have missing parts. Normally the program remembers the headers for such articles, and when the missing parts show up on your news server the completed thread will be displayed in the article list window with a '•' in the status column. With a good news server such missing articles will be rare and will quickly show up on the server. With a bad server thay may never show up, and other problems with the server's article number may prevent Thoth's normal efforts to remove from the parts cache any articles that have been expired from the news server. With a terrible news server there can be a large number of such incomplete multi-part binary threads. Each time Thoth displays the posts for that newsgroup the articles have to be added to the article list window, filtered, threaded, checked to see if the missing articles have arrived and removed if they have not. The program also has to add to the cache any new incomplete multi-part post articles. All this takes time and RAM. If you're using a news server that either temporarily or chronically has poor completeness of such multi-part binary posts and never seems to get most of the missing articles, you can check this box to prevent Thoth from trying to keep track of such posts.
  594.  
  595. Operation
  596.  
  597. When you select some articles for downloading they are immediately added to a special “Queued Transfers List” window. Queued sending of messages is handled similarly. When you click on the Send button in a message window, some initial validity checks are performed on the message. It is then saved to the special “Thoth Outbox” folder as a regular message file, the message is added to the “Queued Transfers List” window, and the message window is closed. An up arrow symbol in the left column indicates a queued message; while a down arrow indicates a queued download.
  598.  
  599. This “Queued Transfers List” looks like a simplified article list window. It shows the count (the number of parts), the subject, and the lines (total for all parts) for each item to be downloaded or sent. The leftmost column is used for a marker character that indicates the status of each item. Unmarked items are queued for downloading or sending. Items with a checkmark were successfully downloaded or sent. Items in red and marked with an X were not successfully downloaded or sent. Items currently being downloaded or sent are marked with a numeral from one to six indicating which queued transfer task they belong to. See below on how to retry such failed transfers. The “Queued Transfers List” window is similar to the full group list window in that it may be hidden or shown, and it's position and hidden/shown state are remembered between newsreading sessions.
  600.  
  601. At the top of the “Queued Transfers List” window is a status area where information about any ongoing transfers is displayed. The buttons named Pause or Resume can be used to pause downloading or resume downloading. In situations where additional news server connections may permit faster downloading or sending and there are sufficient available news server connections, the Pause/Resume buttons may be used to enable or disable a second through sixth news server connection. The status for the queued transfer labeled with numeral one is shown in the topmost panel, the one for numeral two is just below that, etc.
  602.  
  603. It is not necessary that downloading and sending occur immediately. If transfers are paused, articles to be downloaded and messages to be sent are added to the queued transfers but no downloading or sending occurs. Downloading and sending will start as soon as the Resume button is pressed. It's therefore possible to browse through newsgroups selecting articles to be downloaded without actually tying up the machine by transferring megabytes of posts from the news server. Queued downloading and sending can be resumed when its convenient. Note that any in-progress download or send is normally canceled when transferring is paused. To instead pause the transfer while allowing the current download or send to complete, option-click on the Pause button. To immediately cancel the in-progress transfer without disabling the queued transfer connection, so that the next queued item will begin transferring, shift-click on the Pause button.
  604.  
  605. When the program is quit or servers are closed, any successful downloads and sends are removed from the list. All others are saved to the “Thoth Transfers” file, and restored when that file is opened again. Therefore items do not have to be downloaded or sent in the same session in which they're picked. The files for any successfully sent messages are also deleted from the “Thoth Outbox” folder.
  606.  
  607. 
  608.  
  609. In the News menu, the menu items that are normally named “Mark Read” and “Mark Unread” are renamed “Mark Done” and “Mark Pending” for the queued transfers window. If you select a number of items in the list and choose the “Mark Done” command, any selected pending items will be marked as done with an error value of canceled. The busy item and any items already marked done will not be affected. Similarly, if the “Mark Pending” command is chosen, any selected done items will be marked as pending and the error value reset, and other items will be left untouched.
  610.  
  611. It's possible to see what error occurred for any item marked done, and to change the folder where any retry will be saved. By double clicking on a single, done download item, the Download Info dialog is displayed:
  612.  
  613. 
  614.  
  615. This dialog displays some information about the article (the newsgroup and subject), as well as a description of any error that occurred during downloading. It shows the folder where the article was to have been saved. If the download was unsuccessful and you wish to change the folder for a later redownload attempt, you can do this by clicking on the “Set…” button. (Note that this button will be disabled if the download in question was for saving an article to the article cache file.) There's also a checkbox to immediately reset the status to pending, so that a new download attempt can being immediately. If a multi-part download was interrupted before it was completed, and the temp file was not automatically deleted (because the “Keep Partial Downloads” option is checked in the “Extracting Binaries” panel of the “Preferences” dialog), it may be possible to resume the download after the last successfully downloaded part. The “Try to Resume Interrupted Download” checkbox will be enabled in this case.
  616.  
  617. This dialog will also be shown if multiple marked done download items are selected. In that case the information shown will be for the topmost selected item. Changing the status or download folder in the dialog will change the status and download folder for all the selected downloads. This is a quick way to change the download folder for a group of queued downloads. The “Try to Resume Interrupted Download” checkbox is always disabled when multiple items have been selected. Also any download items representing articles to be saved to the article cache will not have their download folder changed by this dialog.
  618.  
  619. A similar dialog is displayed for a completed send item. If a message is added back to the queued messages at startup or when switching folders because it was found in the outbox folder and there was no corresponding message already in the list of queued messages, it will display a “rescued from outbox” error message. Such items are usually the result of a machine crash prior to quitting Thoth or closing servers, so that the “Thoth Transfers” file was not saved and sent messages deleted. In this case the message may or may not have already been sent.
  620.  
  621.  Part Ten: Binary Decoding and Image Display
  622.  
  623. Introduction
  624.  
  625. Thoth has a built-in decoder that handles all the methods commonly used to encode binaries in usenet posts. It can handle multiple attachments per post, as well as attachments that have erroneously been encoded multiple times. The extra checking that the decoder does makes it a bit slower than some, but it should do a better job at handling the kinds of problems often encountered with usenet binaries. It can also automatically display downloaded images.
  626.  
  627. Preferences
  628.  
  629. The preferences for Thoth's built-in binary decoder are located in the “Extracting Binaries” panel of the “Preferences” dialog.
  630.  
  631. 
  632.  
  633. The decoder can be disabled by unchecking the “Decode Extracted Binary Attachments” checkbox. In this case do decoding is attempted, and the temp files with the encoded binary attachments are simply saved to the disk with no further processing. Do not try to use the Save command with binary posts, because this incurs a lot of extra processing and memory use and is intended to save styled article text to a file. Always use the extract binary commands to save binary posts to disk. If for some reason you must use the regular save command, make sure that the “Save with Styled Text” option is turned off.
  634.  
  635. The “Shorten Long Filenames” popup menu determines how long filenames (such as those originating from a Windows machine) will be shortened. Characters may be removed from the front, middle, or end (prior to any file extension like .jpg) to create a filename short enough to be used on the Mac OS.
  636.  
  637. Sometimes an attached binary may be encoded be encoded multiple times. This used to be fairly common, but now is much less so. The “Try Recursive Decoding” option can be used to have the program try to decode again a successfully decode file in case it was encoded multiple times. This may cause problems if the decoded file was not encoded multiple times but does happen to contain text that looks like the start of an encoded file. In that case the checkbox should not be checked.
  638.  
  639. For all displayed images, the “Resize Images to Fit Window” checkbox determines how large images will be displayed. If it's unchecked they will by default be done at full size, with scrollbars enabled as necessary to show the rest of the image. If instead it is checked, then the window will be made as large as possible and the image reduced in size to fit this window.
  640.  
  641. Please note that it's not necessary to open an article window for a post to display the image it contains. In fact doing so just adds and extra step and makes image downloading and sisplay much slower. It's much better to simply select the articles you're interested in in an article list window, then use the “Extract Binaries” command to automatically start downloading the articles and displaying any attached images.
  642.  
  643. Often MIME Base64 encoded files will have the file creator and type information specified in the MIME headers of the file. Usually this information will then be used by Thoth's built-in decoder to set the creator and type for the decoded file. To instead use the creator specified in your Internet Config settings, check the “Prefer Internet Config Creators” checkbox. However, as described above, probable image files will always have their types assigned according to the type of image data they appear to contain, and not according to the file types specified in a MIME header.
  644.  
  645. The rules for BinHex encoding in multiple parts suggest that the start and end of each section of a BinHex attachment should have a special line of text that the decoding program can read and recognize. This makes decoding safer, since it's possible that a line of non-encoded text could be mistaken for BinHex data. Unfortunately, this standard may not be followed by some poorly written BinHex encoding software. By checking the "Use Slack BinHex Decoding Rules," you can tell Thoth's built-in decoder to perform less stringent checking of each line of text to determine whether it should be decoded or not, allowing the program to try to decode such badly formatted files.
  646.  
  647. Comments on Base64 Decoding
  648.  
  649. When performing a Base64 decode, if the program encounters a line containing name="filename.ext" or name=filename.ext or file:"filename.ext" or file:filename.ext before it finds any Base64 data, that name will be used for the decoded file. Otherwise an attempt is made to located a name for the decoded file using the Subject header line in the message. If this is unsuccessful, a name of the form untitled-nn or untitled.ext-nn will be used.
  650.  
  651. Except as noted below, Thoth does not look for or use much of the MIME header information about an attached file that may be available. For example, it isn’t very smart about AppleDouble encoding. Most such files will decode properly, and will have the appropriate file creator, type, resources, etc., but some may not. This should rarely be a problem, since AppleDouble is not a wise choice for attachments and is seldom used for posting binaries.
  652.  
  653. Setting the Type and Creator of Decoded Files
  654.  
  655. The file mapping settings of Internet Config will usually be used to assign a file type and creator to the converted file. How this is done depends on whether the file was encoded.
  656.  
  657. For a uuencoded file, there is no information available about what creator and type the decoded file should have. Therefore the type and creator will be set using the name of the decoded file and the file mapping settings of Internet Config. Some special handling is done for potential image files, however, as is described below.
  658.  
  659. Base64 encoded files may contain some clues indicating what should be the type and creator of the decoded file. If the MIME headers include information about the file type and creator (using the x-mac-type= and x-mac-creator= header strings), this information will be used. Otherwise, if there is a header of the form:
  660.  
  661. Content-type: image/image-type
  662.  
  663. where image-type is one of:
  664.  
  665. jpeg
  666. gif
  667. tiff
  668. pict
  669.  
  670. then the file type and creator will use the Internet Config file mapping settings for a file whose name ends in:
  671.  
  672. .jpg
  673. .gif
  674. .tif
  675. .pict
  676.  
  677. respectively. Otherwise, the actual name of the decoded file will be used in conjunction with the file mapping settings of Internet Config to set the type and creator for the decoded file, just as is done for uuencoded files. As noted above, there is a preference setting to use the Internet Config creator even when a MIME creator is found.
  678.  
  679. Files encoded with MacBinary, BinHex, AppleSingle, and AppleDouble all contain information about the original file's creator and type. This information is used to set the decoded file's creator and type.
  680.  
  681. Note that if the file mapping using Internet Config is unsuccessful (because you have not defined a mapping that matches the file name), the decoded file will appear to be a text document. You will then have to determine the appropriate file type and creator yourself, and use some other utility program (ResEdit, for example) or system extension (Snitch, for example) to change the type and creator to the appropriate values.
  682.  
  683. Finally, for files that do not contain encoded file type information, Thoth does a test on the first 4 bytes of each file it decodes to see if the file is probably a JPEG or GIF image file. If this seems to be the case, then the appropriate file type is assigned to the decoded file independent of the file type obtained from the filename extension and Internet Config or the file type indicated in a MIME header. This is done to deal with a weakness in QuickTime’s handling of image files: QuickTime chooses the proper decoder to use based on a file’s type and not the actual image data, and a file whose type doesn’t match the image data will fail to be properly decoded. The image viewer built into Thoth guards against these kinds of error, but other programs which use QuickTime to display images may not.
  684.  
  685. Comments on Uudecoding
  686.  
  687. Correctly uuencoded files should contain a line of the form:
  688.  
  689. begin nnn filename.ext
  690.  
  691. directly before the start of the uuencoded data, all on the same line. The nnn is an octal number used to set the file permissions under UNIX and similar operating systems. filename.ext is the name of the decoded file.
  692.  
  693. In some cases (typically due to an error by the encoder), the file permission number is missing. Thoth will still recognize and decode such files.
  694.  
  695. Split Binary Attachments
  696.  
  697. In some cases files are split before being encoded and posted using something like the Windows program MasterSplitter or similar. In that case when Thoth is finished decoding the attachment, what you have is a segment of the original file. Posts like this are found in groups where large files such as movies are posted. The individual decoded attachments will have names like movie.mpg.001, movie.mpg.002, etc. To recreate the original file you have to rejoin the individual segments in the correct order, starting with part .001 (part .000 is not needed or used). This can be done using the shareware program Rosetta, available from the Thoth home site:
  698.  
  699.     <http://www.thothsw.com>
  700.  
  701. Image Options
  702.  
  703. If both “Show Images” and “Catalog Images” are checked, newly downloaded images will be added to a special “Image Catalog” window showing thumbnails of the images. This window can be shown or hidden using the Windows menu. The thumbnail display can be live-filtered much like the full group list and filters list windows. To prevent from too-frequent updating of the image catalog window on machines with fast connections, new thumbnails are added to the catalog only about once every 5 seconds. To permit live filtering to be useful, no images will be added while the window's live filtering panel is displayed (using the “Show/Hide Details” command from the View menu). Showing and hiding the panel at the top of the window pauses and unpauses adding thumbnails to the window.
  704.  
  705. If instead only “Show Images” is checked, then downloaded images will be displayed one at a time in a special image window. The size and position of this window is remembered by the program. Automatic display of newly downloaded images can be enabled by setting an appropriate interval in the “Update Image Every” textbox. With a value of 0 image display is always paused, and to show the next image you must use the Pause icon button or 'p' main keyboard shortcut to toggle the paused state. Other useful main keyboard commands include 'c' to center the image if it's larger than the window, and 'b' or 's' to magnify or demagnify the image by a factor of 2. The resize to fit option has the main keyboard shortcut or 'r'.
  706.  
  707. The “Display Downloaded Images” command in the View menu lets you toggle image display on and off. Holding down the option key while choosing the command empties the queue of images waiting to be displayed.
  708.  
  709. Thoth can display PICT, JPEG, GIF (file type 'GIFf'), TIFF, PNG (file type 'PNGf'), and BMP (file type 'BMP ') images, either as they are downloaded or via the Open command. Image files opened via the Open command are shown in separate windows which are distinct from the window used for automatically viewing downloaded images. QuickTime movies (file type 'MooV') and AVI movies (file type 'VfW ') and MPEG movies (file type 'MPEG') and MP3 files can be shown in the same manner. Thoth can also play MP3 (file type 'MPG3' or 'Mp3') and WAVE (file type 'WAVE') sound files. It can also display image catalog files created in Ptah. More information on Ptah can be found at the Thoth home site:
  710.  
  711.     <http://www.thothsw.com>
  712.  
  713. The Info button in image windows can be used to display some additional information in the image files that's added Thoth when the “Add Post Info Text to Downloaded Files” option in “Extracting Binaries” is checked. For all Thoth windows that have an associated file (signified by the file icon in the window's titlebar), you can option-click the window title to display a dialog allowing you to rename the associated file. This may be handy in conjunction with the Info window for downloaded images that originally had very long filenames that have been truncated, making it possible to copy text from the Info window and paste it into the Rename dialog.
  714.  
  715. For image windows, pressing command-1, -2, -3, or -4 is a shortcut for clicking on the trash, resize, info, or pause buttons. If main keyboard shortcuts are enabled, pressing 't', 'r', 'i', or ' ' are also valid shortcuts. Movie and sound windows use similar shortcuts, with the keypad + and - keys used to adjust the playback sound level.
  716.  
  717. The left and right arrow buttons at the bottom of the window can also be used to navigate to the next or previous file. By holding down the control key a popup navigation menu is shown allowing you to choose a different image file in the same folder. Holding down the option key while clicking on the left or right arrow buttons or when selecting a new file from the contextual menu will open the image in a new window instead of the current one. These navigation features are also available for text, image catalog, and movie windows. For image and movie windows, the 'p' and 'n' keys are shortcuts for going to the previous or next item in the same folder.
  718.  
  719. For image catalog windows, the Delete key and Clear menu command can be used to remove items from the catalog window when details are hidden (there's no text box at the top of the window). Holding down the option key also deletes the associated image file.
  720.  
  721.  Part Eleven: Binary Posting
  722.  
  723. Introduction
  724.  
  725. Thoth makes it easy to include attachments to messages.
  726.  
  727. A file icon button is shown in message windows, to the right of the “send to self” button. Clicking on it elicits the “Attached File Settings” dialog, used to choose a single file to attach to your post, set the encoding method, and determine how the binary file will be segmented into multiple parts. Clicking on the Send button causes the selected file to be (optionally) uuencoded, split into several sections, and sent. The keyboard shortcut for clicking on the file icon is Command-4 (just as Command-1,2,3 are shortcuts for the first three icon buttons).
  728.  
  729. 
  730.  
  731. 
  732.  
  733. Preferences
  734.  
  735. There are four preference items in the “Message Files Options” pane of the “Preferences” dialog that set the default binary posting settings. “News part size in kB” lets you set a default value for the approximate size in kB of each section of the file being posted. “Mail part size in kB” does the same for files being emailed. The actual number of bytes in the section will be somewhat greater, since this number does not include the header lines or any of the additional lines required to mark the start and end of segments, the encoding method, etc. Please also note that temporary system memory is used when posting files. The amount of memory required is somewhat greater than the value entered in the two “part size in kB” boxes. Using temporary memory means that you do not have to increase the memory partition of Thoth in order to send large files. In fact, since increasing the memory partition reduces the amount of memory available to the system and other applications, it reduces the amount of temporary memory available for sending attached files.
  736.  
  737. 
  738.  
  739. The two other popup menus, labeled “News encoding:” and “Mail encoding:” permit you to specify a default method for how the attached file will be encoded before posting. As noted above, these popup menus also appear in the dialog used to select a file attachment, allowing the default value to be overridden for a particular post. The available options are uuencoding (the standard internet encoding method), binhexing (appropriate for Macintosh files) and none (for plain text files).
  740.  
  741. Generally uuencoding should be used for binary posts to non-Macintosh binary newsgroups, and for binary email to non-Macintosh users. BinHex encoding may be used to email a Mac file to another Mac-using friend, or to post a Mac file to a Mac-only binary newsgroup. No encoding should be used to post or email long pure-text files.
  742.  
  743. Note that the wrap checkbox in the Message Options dialog affects how unencoded binary posts are handled. If it's checked, then the file's text will be wrapped to 80 columns. If it's not, the file's text will still be wrapped to 1000 columns (which was chosen because that's the guaranteed lower limit for maximum line lengths for mail servers).
  744.  
  745. The name of the file, and the part number, will be added to whatever subject line you entered in the message window. For example:
  746.  
  747. Subject: My test post
  748.  
  749. would become when sent:
  750.  
  751. Subject: -Jupiter.gif (0/1) My test post
  752.  
  753. if you were posting a file named Jupiter.gif and the “Put Attachment Name First in Subject” checkbox was checked. This format is in accordance with the FAQ for the alt.binaries.pictures newsgroups, which are the grandparents of most of the binary newsgroups in use today. Unfortunately Thoth is just about the only newsreader in use today that ensures the subject for binary posts will be formatted properly. Many of the problems that people encounter in binary groups with respect to being able to distinguish binary posts from text posts, replies to binary posts, and multi-part post subject threading occur because the standard format outlined in the FAQ is not used. To instead have the attachment name come last:
  754.  
  755. Subject: My test post -Jupiter.gif (0/1)
  756.  
  757. you can uncheck the “Put Attachment Name First in Subject” checkbox.
  758.  
  759. Any text entered in the body of the message window becomes the descriptive information supplied in part 0 of the binary post. If you don't supply any such text no part 0 post will be sent.
  760.  
  761. Please note that binary attachments should only be posted to binary newsgroups. Most newsgroups are intended only for discussion, and binary posts are not welcome in such groups. You should also not use Thoth to post files that you don't have the authority to post such as copyrighted pictures or music or commercial software.
  762.  
  763.  Part Twelve: Keeping Articles and Reading News Offline
  764.  
  765. Introduction
  766.  
  767. Thoth gives you the ability to mark articles as “kept.” A kept article is downloaded from the news server and saved on your hard disk in a pair of special cache files. Then whenever a article list window is opened, all kept articles for the newsgroup are displayed (although there is a preference to hide kept articles by default in online mode). This makes it easy to refer to old posts when reading the news. It also makes it possible to use Thoth as an offline newsreader.
  768.  
  769. The program does some cache management on its own. If a cache file is obviously damaged when it is opened (the number of entries in the file does not match the indices for the file), the indices will be rebuilt by reading the file. When the cache files are closed if they contain an excess amount of unused space caused by expiring or deleting cache entries, the files will automatically be compacted. By holding down the option key when quitting or closing news servers, the user can cause the “Cache Management” dialog to be displayed. using this dialog it's possible to manually expire the various cache files or force them to be rebuilt to repair more severe damage than is handled automatically. Note that to rebuild a cache file you must have enough free disk space for a second copy of the file on the same drive as the original cache file.
  770.  
  771. Marking Articles Kept and Unkept
  772.  
  773. The News menu has two commands that are used to manage kept articles. The “Mark Kept” command can be used to save a copy of the article to disk. It can be applied to an article in an open article window, or to selected articles listed in a article list window, or to entire selected newsgroups in a group window. The “Mark Unkept” command is similarly used to signal that you no longer wish to keep an article or series of articles. Holding down both the shift and option keys while selecting “Mark Kept” will automatically mark kept all the articles for all newsgroups in all open user group windows and also mark the newsgroups as read. Holding down the option key while selecting “Mark Kept” for a user group window will automatically mark kept all the selected newsgroups in the user group window and also mark the newsgroups as read.
  774.  
  775. In user group windows, newsgroups that have kept articles are marked with either a '' symbol (if there are any unread kept articles) or a '◊'  symbol (if all the kept posts have been marked read). In article list windows any kept posts are also marked with a ''  symbol (if the article text was also saved) or with a '◊' (if only the headers were saved, so that the article can't be read, just listed). If an article listed in a article list window is in the kept cache but was also obtained from the news server, it's marked with a '~ ' symbol. By definition kept articles are always shown in article list windows, even if they've been marked as read, but there is a preference to hide kept articles by default in online mode. They can of course be filtered out or hidden via live filtering. In online mode article list windows will shown any new articles that are available on the news server along with any posts that you've kept, and a View menu command allows any kept posts to be shown or hidden. In offline mode only kept articles are shown.
  776.  
  777. The “Article List Options” panel of the “Preferences” dialog controls how the “Mark Kept” command will operate. These program-wide settings can be overridden for specific newsgroups in the usual way, by setting the desired values in the “Article List Options” panel of the newsgroup setting dialog. If “Keep Headers Only” is checked then the article text is never saved to the hard disk, just the headers that are shown in article list windows. This should usually be unchecked, but may be checked if you wish to use Thoth as an offline newsreader and don't want to download the full text for all the posts in a newsgroup. The “Keep Binary Attachments” option determines if, when saving the article text to disk, whether any binary attachments should also be saved to disk or if the article text should be truncated where the attachments start (similar to what is usually done when opening a binary post in an article window).
  778.  
  779. Thoth usually needs to be in online mode when using the “Mark Kept” command, because the program needs a connection to the news server so that it can save the articles to disk. The exception is when you're reading articles offline. Then you can select an article that was marked kept but saved with only headers and do the “Mark Kept” command. This causes the article to be added to the “Queued Transfers List” list for downloading the next time you're online.
  780.  
  781. Also note that the addition of kept articles also introduces one change to the “Mark Read” and “Mark Unread” commands. Normally these commands apply equally to all articles, kept or not kept. The single exception is when marking selected items in a group window as read or unread. In this case holding down the option key while marking the selected groups read or unread will only mark the non-kept articles. The read status of any kept articles will not be affected. Also, the “Always Mark Crossposts Read” option does not apply to kept articles. Marking a kept article as read or unread will not affect any cross-posted articles in other groups, kept or otherwise.
  782.  
  783. Offline Newsreading
  784.  
  785. A checkbox in the “Miscellaneous Options” pane of the “Preferences” dialog is used to determine if Thoth should startup in online or offline mode. If it's configured to startup in online mode (meaning that during startup it will attempt to connect to the news server, check for new posts, etc.) it can be forced to startup in offline mode by holding down the shift key while the program is launching.
  786.  
  787. When Thoth is in offline mode it is not connected to the news server. Commands that require a network connection (such as getting the FAQ for a newsgroup or command-clicking on an URL) are either disabled or will fail with an error message if completing the command would require a network connection. It is still possible to open a message window and “send” a reply. The message will be added to the “Queued Transfers List” window for sending the next time you're online.
  788.  
  789. The “Mark Kept” and “Mark Unkept” commands are what makes it possible to use Thoth as an offline newsreader. In offline user group windows show how many kept articles each newsgroup has. Article List windows open to show just those kept articles. It is possible to open such kept article for reading in offline mode if the article text was kept (and not just the headers). Therefore using Thoth as an offline newsreader means going online, marking articles as kept (perhaps using the shortcut of doing a shift-option “Mark Kept” to mark all groups as kept and read in one step), then going offline to read the kept posts. You can then mark any posts you're no longer interested in as unkept.
  790.  
  791. Cache Maintenance
  792.  
  793. It is possible for the two kept article cache files (as well as the parts cache file used to keep track of incomplete multi-part posts) to become damaged or corrupted from a variety of mishaps. When this happens it may be possible to repair the cache files. It may also be desirable to expire the caches to remove old posts.
  794.  
  795. Holding down the option key when choosing Quit or “Close Server” menu leads to a “Cache Management” dialog. From this dialog it is possible to remove items from any of the cache files that are older than a specified number of days, or to rebuild the cache files to try to repair any damage that may have occurred. The parts cache file is always automatically expired when quitting or closing news servers to remove any posts older than 10 days. Any errors encountered when expiring the parts cache file will result in an error alert (usually an “unexpected error type -50” with a location of “@91.” A similar problem when checking for new posts in newsgroups may give an error location of 95. An error in expiring the parts cache will similarly report an error at 88. In fact, most errors with locations from 87 and 100 are the result of cache file problems. If you encounter such errors it's advisable to try to rebuild the cache files using the “Cache Management” dialog.
  796.  
  797.  Part Thitreen: The Status Window
  798.  
  799. Introduction
  800.  
  801. The status window usually has two panes in it. The top pane shows the progress of normal reading operations:
  802.  
  803. 
  804.  
  805. A red indicator light is drawn just to the left of the topmost Cancel button when a downloaded binary attachment is being decoded. A green indicator light is drawn if a queued transfer is taking place.
  806.  
  807. The bottom panel displays the progress of queued article list window opening. The zoom box in the status window can also be used to toggle the window between showing just the top panel and all panels.
  808.  
  809. Note that the status window has two special positions where it can be anchored: to the top of the main screen (the one with the menubar) and to the bottom of the main screen. When dragged to either of these positions, other program windows will be located and zoomed so that they don't overlap the status window. If the status window is located elsewhere program windows do not consider its location when being located and zoomed. Anchored to the bottom of the main screen is a good choice for the status window location if a non-floating status window is being used, because the window will then often still be visible from other programs. This makes it easy to check on Thoth's status when you're in some other program.
  810.  
  811. Preferences
  812.  
  813. The status window can either be a regular window like the one shown above, or a floating window that floats above all other windows. A checkbox in the “Miscellaneous Options” portion of the “Preferences” dialog lets you choose which type of status window to use. Note that floating windows are always hidden when you switch to another application, so choosing a floating status window means you can't keep an eye on the status of Thoth when its running in the background.
  814.  
  815.  Part Fourteen: Shortcuts
  816.  
  817. Introduction
  818.  
  819. Thoth offers a number of shortcuts to make newsreading easier and faster. A number of these shortcuts are summarized below.
  820.  
  821. Keypad Shortcuts
  822.  
  823. When the “Keypad Shortcuts” option in the “Newsreading Options” pane of the “Preferences” dialog is checked, the keypad keys can be used for the following commands:
  824.  
  825. 
  826.  
  827. For article windows whose the parent article list window uses reference threading, the 4, 6, 8, and 2 keys are shortcuts for going to the parent, child, previous sibling, or next sibling of the currently viewed article, respectively. Otherwise 4 and 8 act as previous article commands, and 6 and 2 act as next article commands.
  828.  
  829. Main Keyboard Shortcuts
  830.  
  831. When the “Main Keyboard Shortcuts” option in the “Newsreading Options” pane of the “Preferences” dialog is checked, the following keys on the main keyboard can be used in windows that do not allow text to be entered:
  832.  
  833.     I or N                Next Article
  834.     P                        Previous Article
  835.     T                        Next Thread
  836.     J or G                Next Group
  837.     M                        Mark Read
  838.     U                        Mark Unread
  839.     ;                        Mark Others Read
  840.     W                        Close
  841.     A                        Select All
  842.     Space bar            Next Chunk
  843.     B                        Next Digest Section
  844.     L                        Open Last Reference
  845.  
  846. In an article window, pressing the spacebar usually scrolls the article one screen at a time until the end is reached, then it causes the next article to be displayed. If the shift key is held down it instead scrolls to the start of the next section of unquoted text. If the “Spacebar Digest Shortcut” option is checked, then pressing the spacebar will go to the next item in a digest format post (such as the periodic Info-Mac Digest posts) and behave normally for a non-digest format post. 
  847.  
  848. In article windows Command-1 and Command-2 are additional keyboard shortcuts to go to the previous or next article in the thread. For article windows whose the parent article list window uses reference threading, the [, ], (, and ) keys are shortcuts for going to the parent, child, previous sibling, or next sibling of the currently viewed article, respectively. Otherwise [ and ( act as previous article commands, and ] and ) act as next article commands.
  849.  
  850. Modified Menu Commands
  851.  
  852. The meaning of some menu commands are changes when certain modifier keys are held down.
  853.  
  854. Holding down the Shift key while doing a Save, Save As, or Append will save just the selected text. Otherwise the entire window text is saved. Similarly holding down Shift while choosing Print will print only the selected text.
  855.  
  856. In message windows holding down Shift while choosing Paste will past the clipboard text as quoted text.
  857.  
  858. Holding down the Option key while choosing “Extract Binaries” or “Extract BInaries Manually” will prompt you where to save the binary attachments rather than using the default folder you've selected.
  859.  
  860.  Part Fifteen: Scripting
  861.  
  862. Thoth includes some specialized Apple Events to support simple scripting. These events allow users to write scripts that get the header or body text for an open article window, or get or set the header or body text or attached file for an open message window, or create and send a new message, etc. There is also an Apple Event that allows a script to determine if Thoth is busy performing a long operation.
  863.  
  864. For the getmessagepart/setmessagepart events, the name of the header should be the name of one of the headers visible in a message window, all in lower case, without the colon at the end, i.e.:
  865.  
  866.     subject
  867.     newsgroups
  868.  
  869. The empty string is used to designate the message body, as in:
  870.  
  871. tell application "Thoth"
  872.     setmessagepart "sample body text" messagePart ""
  873. end tell
  874.  
  875. Finally, to specify the contents of the “extra mail” and “extra news” headers, use the special names:
  876.  
  877.     extramail
  878.     extranews
  879.  
  880. For the newmessage event, the various sending options have different defaults. byNews defaults to true; bymail defaults to false; and bySelf defaults to the usual preferences setting. To obtain different behavior you should set the various sending options explicitly in your script.
  881.  
  882. For the setmessageattachment event, the default values for the various encoding methods and sizes are the current values used for the message window. Unless they've previously been set otherwise, this means the values set in the “Preferences” dialog.
  883.  
  884. Thoth Suite: Custom suite for Thoth
  885.  
  886. getfullmessage: Get the complete text for a message window.
  887.     getfullmessage
  888.         [windowName  string]  -- Name of message window (defaults to 
  889.             topmost message window).
  890.         [doWrap  boolean]  -- Wrap the body and signature text (defaults to false).
  891.     Result:   string  -- The complete text of the message, formatted as for printing.
  892.  
  893. getmessagepart: Get the body or header text for a message window.
  894.     getmessagepart
  895.         messagePart  string  -- The name of the header to return, or the 
  896.             empty string to return the body text.
  897.         [windowName  string]  -- Name of message window (defaults to 
  898.             topmost message window).
  899.         [doWrap  boolean]  -- Wrap the text (if it's the body or signature; 
  900.             defaults to false).
  901.     Result:   string  -- The requested body or header text for a message window.
  902.  
  903. setmessagemailcopy: Set the Mail Copy option for a message window.
  904.     setmessagemailcopy
  905.         mailCopyType  posterMailCopy/nobodyMailCopy/omitMailCopy  -- 
  906.             The type of Mail-Copies-To header to include in the message.
  907.         [windowName  string]  -- Name of message window (defaults to 
  908.             topmost message window).
  909.  
  910. setmessagepart: Set the body or header text for a message window.
  911.     setmessagepart  string  -- The text to place in the body or header of the 
  912.         message window, replacing any previous text.
  913.         messagePart  string  -- The name of the header to replace, or the 
  914.             empty string to replace the body text. (Note: attempts to replace “from” are ignored).
  915.         [windowName  string]  -- Name of message window (defaults to 
  916.             topmost message window).
  917.  
  918. setmessagepersonality: Set the personality for a message window.
  919.     setmessagepersonality
  920.         personalityName  string  -- The name of the personality to use.
  921.         [windowName  string]  -- Name of message window (defaults to 
  922.             topmost message window).
  923.  
  924. setmessageattachment: Set the file attachment for a message window.
  925.     setmessageattachment
  926.         [attachedFile  alias]  -- The file to send as an attachment. If no
  927.             file is specified, any existing attachment is removed.
  928.         [windowName  string]  -- Name of message window (defaults to
  929.             topmost message window).
  930.         [mailEncode  noEncode/uuEncode/binEncode]  -- Encoding method
  931.             for emailed attachment.
  932.         [newsEncode  noEncode/uuEncode/binEncode]  -- Encoding method
  933.             for posted attachment.
  934.         [mailSize  integer]  -- Size of emailed attachment segments in kB.
  935.         [newsSize  integer]  -- Size of posted attachment segments in kB.
  936.         [nameIsFirst  boolean]  -- Put attachment name first in subject.
  937.  
  938. setmessagenewsserver: Set the news server server for a message window.
  939.     setmessagenewsserver  string  -- The name of the news server.
  940.         [windowName  string]  -- Name of message window (defaults to 
  941.             topmost message window).
  942.  
  943. setmessagemailserver: Set the mail server for a message window.
  944.     setmessagemailserver  string  -- The name of the mail server.
  945.         [windowName  string]  -- Name of message window (defaults to 
  946.             topmost message window).
  947.  
  948. sendmessage: Send a message window.
  949.     sendmessage
  950.         [windowName  string]  -- Name of message window (defaults to 
  951.             topmost message window).
  952.  
  953. newmessage: Open a new message window.
  954.     newmessage
  955.         [byMail  boolean]  -- True if the message is to be emailed.
  956.         [byNews  boolean]  -- True if the message is to be posted.
  957.         [bySelf  boolean]  -- True to email a copy to self.
  958.  
  959. getfullarticle: Get the complete text (with the current binary
  960.     truncation setting) of an article window.
  961.     getfullarticle
  962.         [windowName  string]  -- Name of u window (defaults to 
  963.             topmost article window).
  964.     Result:   string  -- The complete text (with the current binary 
  965.         truncation setting) of the article window.
  966.  
  967. getarticlepart: Get the body or header text for an article window.
  968.     getarticlepart
  969.         articlePart  string  -- The name of the header to return, or 
  970.             the empty string to return the body text.
  971.         [windowName  string]  -- Name of article window (defaults to 
  972.             topmost article window).
  973.     Result:   string  -- The requested body or header text for an article window.
  974.  
  975. getbusy: Determine if the program is busy performing a
  976.     long interactive operation.
  977.     getbusy
  978.     Result:   boolean  -- The program’s busy state for user interaction.
  979.  
  980. gethastasks: Determine if the program is busy performing
  981.     queued operations or decoding.
  982.     gethastasks
  983.     Result:   boolean  -- The program’s busy state for queued 
  984.         operations and decoding.
  985.  
  986. toggleonline: Toggle the online state of the program.
  987.     toggleonline
  988.  
  989. getonline: Determine if the program is in online mode or not.
  990.     getonline
  991.     Result:   boolean  -- The program's online state.
  992.  
  993. toggletransferspaused: Toggle the paused state for queued
  994.     transfers (must be in online mode).
  995.     toggletransferspaused
  996.         connection  transferOne/transferTwo/transferThree/transferFour/
  997.             transferFive/transferSix  -- Which queued transfer connection to toggle.
  998.  
  999. gettransferspaused: Determine if queued transfers are paused.
  1000.     gettransferspaused
  1001.         connection  transferOne/transferTwo/transferThree/transferFour/
  1002.             transferFive/transferSix  -- Which queued transfer to get the paused state for.
  1003.     Result:   boolean  -- The paused state of queued transfers.
  1004.  
  1005. markkeptandread: Mark all groups in an open user group window
  1006.     as kept and read (must be in online mode).
  1007.     markkeptandread
  1008.         [windowName  string]  -- Name of user group window (defaults to 
  1009.             topmost user group window).
  1010.         [doAutoSave  boolean]  -- Save the user group window after all the 
  1011.             the headers have been downloaded and marked read.
  1012.  
  1013. openserver: Open a named news server.
  1014.     openserver  string  -- The name of the news server to open 
  1015.     (from the Open Server menu).
  1016.  
  1017. closeserver: Close a named news server.
  1018.     closeserver  string  -- The name of the news server to close 
  1019.     (from the Close Server menu).
  1020.  
  1021. getopenservers: Get a list of the open news servers.
  1022.     getopenservers
  1023.     Result:   list  -- This list of open news servers.
  1024.  
  1025. opengroupwindow: Open a subscribed group list window for a news server.
  1026.     opengroupwindow  string  -- The name of the news server.
  1027.         windowName  string  -- Name of subscribed group list window to open.
  1028.  
  1029. Sample Script
  1030.  
  1031. As an example of using the scripting support in Thoth, here's a simple script written by J. B. Moreno.
  1032.  
  1033. --  example script to forward a post to a specific address 
  1034. --  doesn't keep the full headers but that would be easy enough to add
  1035. --  DOES retain the list of newsgroups the message was posted to
  1036. tell application "Thoth"
  1037.    set oldbod to getarticlepart articlePart ""
  1038.    set oldnews to getarticlepart articlePart "Newsgroups"
  1039.    set oldsubject to getarticlepart articlePart "Subject"
  1040.    set newsubject to "FWD: " & oldsubject
  1041.    set mid to getarticlepart articlePart "Message-Id"
  1042.    set inreplyto to "In-Reply-To: " & mid
  1043.  
  1044.    newmessage with byMail without byNews
  1045.    setmessagemailcopy mailCopyType nobodyMailCopy -- news only, but why not
  1046.    setmessagepersonality personalityName "mail"
  1047.    setmessagepart oldbod messagePart ""       -- set the body
  1048.    setmessagepart "Newsgroups: " & oldnews messagePart "extramail"
  1049.    setmessagepart "X-Comments: Above Newsgroups, yes?" & return messagePart "extramail"
  1050.    setmessagepart "Posted-And-Mailed: no" & return messagePart "extramail"
  1051.    setmessagepart inreplyto & return messagePart "extramail"
  1052.    set sig to "J. B. Moreno" & return & "says hi."
  1053.    setmessagepart sig messagePart "signatureField" -- set the sig
  1054.    setmessagepart "Test Person <test@domain.is.invalid>" messagePart "to"
  1055.    setmessagepart newsubject messagePart "subject"
  1056. -- sendmessage  windowname newsubject  -- uncomment this line to send too
  1057. end tell
  1058.  
  1059.